使用nodejs对两个任务运行异步

running async with two tasks using nodejs?

本文关键字:两个 任务 运行 异步 nodejs 使用      更新时间:2023-09-26

我希望能够使用"async模块"在async内部运行两个任务。

例如:

async.each(openFiles, function( file, callback) {
    // task 1
    function(){
          callback();
     } 
    function(){
          callback(); // task 2, waits for task 1 to finish 
     }  
}, function(err){
   console.log("done");
});

我使用each,因为我循环遍历每个值,并且需要对每个元素应用两个请求。

您应该能够在async.each中运行async.series。这将迭代openfiles并在其中运行系列,只有当系列完成时,它才会在每个循环中进行。

async.each(openFiles, function(file, eachCallback) {
    async.series([
        function(seriesCallback) {
            seriesCallback();
        },
        function(seriesCallback) {
            seriesCallback();
        }
    ], function() {
        eachCallback();
    })
}, function(err) {
    console.log("done");
});

下面是一些2-async方法的代码:

async.each(openFiles, function( file, callback) {
 async.each([task1, task2], function(task, cb) {
  task(file); // exec tasks 1, 2
  cb();       // one completed
 }, callback); // both completed
}, function(err){
 console.log("done");
});

你可以在这里使用javascript回调来创建task1对task2的依赖。像这样:

async.each(openFiles, function( file, callback) {
    // task 1
    function task1(function(){
          function task2 (function(){
              //callback of async
              callback();
          });
     }); 
}, function(err){
   console.log("done");
});

和任务1和任务2函数将接受回调作为参数,如下所示:

function task1(callback){
    //do whatever in task1
    callback();
}
function task2(callback){
    //do whatever in task1
    callback();
}

这样,只有当task1在async.each

内部完成时,task2才会运行