async.each(spiders, function(){
console.log('hi');
}, function(err) {
if(err) { console.log(err);}
else console.log('ok');
});
在记录' hi'之后,async没有执行回调并记录了“确定”#39;或错误。
我的代码有什么问题?
答案 0 :(得分:13)
async
为您的iterator
函数提供了两个重要参数:item
和callback
。第一个给出数组中的实际数据项,第二个是函数,以指示实际方法的结束。当每个迭代器调用指示自己的回调时,将调用最终回调(带有日志('ok')的回调)。
所以你的代码应该是这样的:
async.each(spiders, function(item, callback) {
console.log('spider: ' + item);
callback(null);
}, function(err) {
if (err) {
return console.log(err);
}
console.log('ok');
});
null
参数表示没有错误。
另请注意,处理这样的错误是一种更好的做法。
答案 1 :(得分:2)
引用async.each
文档:
iterator(item, callback)
- 适用于arr
中每个项目的功能。迭代器传递callback(err)
,必须在完成后调用它。如果没有发生错误,则应该在没有参数或显式null
参数的情况下运行回调。
结论:您忘记接受回调参数,因此也没有调用它。