Node.JS:forEach 与 for 循环异步性质
Posted
技术标签:
【中文标题】Node.JS:forEach 与 for 循环异步性质【英文标题】:Node.JS : forEach vs for loop Asynchronous nature 【发布时间】: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 作为参数调用所有异步函数,但并没有真正等待回调完成
但第二个(在我的一个项目中)似乎等待回调并继续数组中的下一项?
它们都一样吗?
【问题讨论】:
【参考方案1】:除了第二个是 50 而不是 49,它们在功能上是相同的。两者都不会在继续下一次迭代之前等待回调,并且在这两种情况下,每次调用都会捕获当前 0...49 值作为functionWrappingAsycfuncs
的本地参数,因此它们都会记录 0 1 2 3...
【讨论】:
以上是关于Node.JS:forEach 与 for 循环异步性质的主要内容,如果未能解决你的问题,请参考以下文章
为啥 .forEach() 有效但 for 循环无效? [复制]