如何在循环Node js中调用asyn函数

时间:2015-10-28 07:35:15

标签: javascript node.js express

我想在for循环中调用async.parellel([],function(){})。当我尝试for循环在异步函数执行之前完成执行。如何解决这个问题。

2 个答案:

答案 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。 希望这会对你有所帮助。