我想在for循环中调用async.parellel([],function(){})
。当我尝试for循环在异步函数执行之前完成执行。如何解决这个问题。
答案 0 :(得分:0)
你无法解决问题,因为它不是问题,它是异步函数的工作方式。
如果在循环期间启动了一堆异步函数,后者将作为一个整体执行,并且一旦释放流控制就将执行器放在循环上执行。
因此,您可能会看到包含循环的函数在异步函数启动之前终止。
一旦所有异步函数终止,通常使用回调函数作为包含根的参数来回应调用者,从而很好地处理异步函数并调用回调函数他们已经回来了。
答案 1 :(得分:0)
我同意Yelizaveta Gagarina。
如果您想使用for循环,可以做一些类似的事情:
var fns = [];
for (var i = 0; i < 9; i++) {
fns.push(function(callback){
// do stuff here and call your callback with or without error
callback(null, stuff); // no err in this example
});
}
async.parallel(fns, function(err, stuff){
if(err) return cb(err); // in this example err is null
// do stuff, call next middleware if you are in this case
next();
});
如果要每1执行一些函数,还有async.series。 希望这会对你有所帮助。