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的所有异步函数,但实际上并不等待回调完成
但是第二个(在我的一个项目中)似乎在等待回调并继续数组中的下一项?
它们都是一样的吗?
发布于 2013-01-07 10:04:36
除了第二个是50而不是49之外,它们在功能上是相同的。在继续下一次迭代之前,两者都不会等待回调,并且在这两种情况下,每次调用都会将当前的0...49值作为functionWrappingAsycfuncs的本地参数捕获,因此它们都将记录0 1 2 3...
https://stackoverflow.com/questions/14188759
复制相似问题