使用nodejs运行两个任务的异步?

时间:2014-08-08 15:09:40

标签: javascript node.js asynchronous

我希望能够使用" 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");
});

我使用每个因为我循环遍历每个值,需要对每个元素应用两个问题。

3 个答案:

答案 0 :(得分:4)

您应该可以在async.series内运行async.each。这将迭代openfiles并在里面运行系列,然后只有在系列完成时才会进行每个循环。

async.each(openFiles, function(file, eachCallback) {
    async.series([

        function(seriesCallback) {
            seriesCallback();
        },
        function(seriesCallback) {
            seriesCallback();
        }
    ], function() {
        eachCallback();
    })
}, function(err) {
    console.log("done");
});

答案 1 :(得分:0)

以下是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");
});

答案 2 :(得分:0)

您可以在此处使用javascript回调来在task2上创建task1的依赖关系。像这样:

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();
}

这样,task2只在task1在async.each

中完成时才会运行