安排异步任务的列表(旧学校的nodejs没有承诺)

发布于 2025-02-11 03:41:35 字数 1324 浏览 0 评论 0原文

我想在不使用Promise&的情况下启动一系列异步任务。异步等待。 我的worfklow是: 。任务1 。任务2 。任务3& 4(并行)

我尝试了库异步。对于一系列的顺序任务或一系列并行,这是可以的。但是,要实施我的工作,我暂时坚持了。

const async = require('async');
const fs = require('fs');

const readFile1 = (name, callback) => {
        fs.readFile(name, 'utf-8', (err, data) => {
                if (err) {
                        callback(err);
                }
                console.log(data);
                callback(null, data);
        });
}

async.series([
function(callback1) {
        async.series([
                function(callback1) {
                        readFile1('./1.txt', callback1);
                },
                function(callback1) {
                        readFile1('./2.txt', callback1);
                },
        ], function(err, results) {
                console.log('series ', results);
        });
},
function(callback2) {
        async.parallel([
                function(callback2) {
                        readFile1('./3.txt', callback2);
                },
                function(callback2) {
                        readFile1('./4.txt', callback2);
                },
        ], function(err, results) {
                console.log('parallel ', results);
        });
}
]);

目前只有步骤1& 2执行。您是否有一个想法(使用异步 /等待的更现代的代码样式?

I want to launch a series of async tasks without using Promise & Async await.
My worfklow is :
. task 1
. task 2
. task 3 & 4 (in parallel)

I've tried the library async for that. That's ok for a series of sequential task or a series of parallel. But to implement my worklfow, I'm stuck for the moment.

const async = require('async');
const fs = require('fs');

const readFile1 = (name, callback) => {
        fs.readFile(name, 'utf-8', (err, data) => {
                if (err) {
                        callback(err);
                }
                console.log(data);
                callback(null, data);
        });
}

async.series([
function(callback1) {
        async.series([
                function(callback1) {
                        readFile1('./1.txt', callback1);
                },
                function(callback1) {
                        readFile1('./2.txt', callback1);
                },
        ], function(err, results) {
                console.log('series ', results);
        });
},
function(callback2) {
        async.parallel([
                function(callback2) {
                        readFile1('./3.txt', callback2);
                },
                function(callback2) {
                        readFile1('./4.txt', callback2);
                },
        ], function(err, results) {
                console.log('parallel ', results);
        });
}
]);

For now only the step 1 & 2 are executed. Have you got an idea for this (apart using a more modern code style with async / await & promises?)

Blured

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陪你到最终 2025-02-18 03:41:35

您需要在async.series()之前拨打顶级回调,将继续进行下一步:(

async.series([
  function (callback) {
    async.series(
      [
        function (callback1) {
          readFile1("./1.txt", callback1);
        },
        function (callback2) {
          readFile1("./2.txt", callback2);
        },
      ],
      function (err, results) {
        console.log("series ", results);
        return callback(err, results); // <-- here
      }
    );
  },
  function (callback) {
    async.parallel(
      [
        function (callback1) {
          readFile1("./3.txt", callback1);
        },
        function (callback2) {
          readFile1("./4.txt", callback2);
        },
      ],
      function (err, results) {
        console.log("parallel ", results);
        return callback(err, results); // <-- and here
      }
    );
  },
]);

重命名的回调名称以使情况更加清晰一些)

You need to call the top-level callbacks before async.series() will continue to the next step:

async.series([
  function (callback) {
    async.series(
      [
        function (callback1) {
          readFile1("./1.txt", callback1);
        },
        function (callback2) {
          readFile1("./2.txt", callback2);
        },
      ],
      function (err, results) {
        console.log("series ", results);
        return callback(err, results); // <-- here
      }
    );
  },
  function (callback) {
    async.parallel(
      [
        function (callback1) {
          readFile1("./3.txt", callback1);
        },
        function (callback2) {
          readFile1("./4.txt", callback2);
        },
      ],
      function (err, results) {
        console.log("parallel ", results);
        return callback(err, results); // <-- and here
      }
    );
  },
]);

(renamed callback names to make things a bit more clear)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文