迭代完成的回调没有被调用
问题描述:
使用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');
});
(未经测试)