迭代完成的回调没有被调用

迭代完成的回调没有被调用

问题描述:

使用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,但不这样做。

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'); 

}); 

(未经测试)