回调完成迭代没有被调用

时间:2011-09-23 06:31:33

标签: node.js asynchronous

使用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但不执行此操作。

1 个答案:

答案 0 :(得分: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');

});

(未测试的)