2011-09-23 64 views
0

使用https://github.com/caolan/async 努力獲得通過異步運行循環,因此發現循環的執行結束處理。 和迭代完成的回調沒有被調用

results=[] 
async.forEach(nfiles, function(item){ 
    console.log(item); 
     results.push(item); 


}, function(err){ /// result call back 
    console.log('in last'); 

});  

爲什麼控制檯未進入結果回調?

假設nfiles是一個數組,並且在每次迭代中都將該項放入結果中,因此在迭代結束時它應該在控制檯中控制inlast,但不這樣做。

回答

3

forEach的第二個參數 - 迭代器函數 - 需要將回調作爲參數並在執行時調用它(以指示它已完成)。你需要這樣調用回調:

results=[] 
async.forEach(nfiles, function(item, callback){ 
    console.log(item); 
    results.push(item); 
    callback(null, item); 

}, function(err){ /// result call back 
    console.log('in last'); 

}); 

(未經測試)

相關問題