并行调用可变数量的函数?

时间:2013-09-03 15:46:21

标签: javascript node.js asynchronous

使用async.parallel或自定义控制流程

arr = [1, 2, 3, 4, 5, 3, 2, 3, 4, 5] //arr could be any length

get_something = function(num, cb){
  async_io(num, function (err, results){
        cb()
  });

} 

我想在“parallel”中对数组的每个成员运行get_something()。当他们全部完成时,我希望回调被调用结果。

1 个答案:

答案 0 :(得分:1)

没有异步:

var n = arr.length, results = new Array(n), oneIsDone = function(index, result){
   results[index] = result;
   if (--n===0) callback(results);
}
arr.forEach(function(val i){ 
    get_something(val, function(result){
       oneIsDone(i, result);
    });
});

使用async:

使用async假设你的异步函数接受一个回调,将错误作为第一个参数返回,结果作为秒返回,就像你的最终回调一样:

async.parallel(arr, get_something, callback);

如果你的功能不符合这个标准,你将不得不做一些丑陋的包装。