【问题标题】:call back of completion of iteration is not getting called没有调用迭代完成的回调
【发布时间】:2011-09-23 19:08:33
【问题描述】:

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

【问题讨论】:

    标签: node.js asynchronous


    【解决方案1】:

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

    (未经测试)

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多