【问题标题】:Node.JS : forEach vs for loop Asynchronous natureNode.JS:forEach 与 for 循环异步性质
【发布时间】:2012-12-20 18:11:19
【问题描述】:
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 作为参数调用所有异步函数,但并没有真正等待回调完成

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

它们都一样吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2017-05-19
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2018-09-15
      相关资源
      最近更新 更多