使用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()。当他们全部完成时,我希望回调被调用结果。
答案 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);
如果你的功能不符合这个标准,你将不得不做一些丑陋的包装。