Node.JS:forEach vs for循环异步性质

时间:2013-01-07 01:37:07

标签: node.js events javascript-events asynchronous event-loop

for(var i=0;i<50;i++) {
      functionWrappingAsycfuncs(i)
}

var nums = [0,1...50]
nums.forEach(functionWrappingAsyncfuns)

functionWrappingAsycfuncs(i){
  readFileAsync(i,function(){
    console.log(i);
  });
}

在上面的函数中,在for循环中运行它的预期性质是50 50次? 但是对于forEach,它会记录1 2 3 ....

这两种实现看起来都相同,但确实有不同的任务 第一个函数将所有异步函数调用为0到50作为参数,但并不真正等待回调完成

但是第二个(在我的一个项目中)似乎在等待回调并继续到数组中的下一个项目?

他们俩都一样吗?

1 个答案:

答案 0 :(得分:3)

除了第二个到50而不是49,它们在功能上是相同的。在继续下一次迭代之前,它们都不会等待回调,在这两种情况下,每次调用都会将当前0 ... 49值作为本地参数捕获到functionWrappingAsycfuncs,因此它们都会记录0 1 2 3。 ..