async.each(spiders, function(){
    console.log('hi');
}, function(err) {
    if(err) { console.log(err);}
    else console.log('ok');
});

记录 'hi' 后,async 不执行回调并记录 'ok' 或错误。

我的代码有什么问题?

最佳答案

asynciterator 函数提供了两个重要参数:一个 item 和一个 callback 。第一个为您提供数组中的实际数据项,第二个是一个函数,用于指示实际方法的结束。当每个迭代器调用指示它们自己的回调时,最终回调(带有 log('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 参数表示没有错误。

另请注意,像这样处理错误是更好的做法。

关于node.js - async.each() 最终回调未执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30150751/

10-16 12:56