2013-01-07 89 views
1
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 ....Node.JS:forEach vs for loop異步性質

這兩種實現看起來一樣,但真正做不同的任務 第一個函數調用所有0異步功能,如50 PARAMS,但並沒有真正等待回調完成

但第二個(在我的項目之一)似乎等待回調,並繼續到數組中的下一個項目?

他們都一樣嗎?

回答

3

除了第二個50而不是49之外,它們在功能上是相同的。在繼續下一次迭代之前,兩者都不會等待回調,並且在兩種情況下,每次調用都會將當前的0 ... 49值作爲本地參數捕獲到functionWrappingAsycfuncs,因此它們都會記錄0 1 2 3 ...