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

使用async.parallel或自定义控制stream,

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

我想在“并行”数组的每个成员上运行get_something()。 当他们都完成了,我想callback调用的结果。

没有asynchronous:

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

与asynchronous:

使用asynchronous假设你的asynchronous函数接受一个callback,返回一个错误作为第一个参数,结果作为第二个,就像你最后的callback:

 async.parallel(arr, get_something, callback); 

如果你的function不遵循这个规范,你将不得不做一些丑陋的包装。