Node.js 不执行async.each()最终回调

Node.js 不执行async.each()最终回调,node.js,async.js,Node.js,Async.js,在记录“hi”之后,async没有执行回调并记录“ok”或错误 我的代码有什么问题?引用文档: 迭代器(项,回调)-应用于arr中每个项的函数。迭代器被传递一个回调(err),一旦完成,就必须调用该回调。如果没有发生错误,则应在不带参数或带有显式null参数的情况下运行回调 结论:您忘记使用回调参数,因此也没有调用它。async为您的迭代器函数提供了两个重要参数:一个项和一个回调。第一个是数组中的实际数据项,第二个是函数,用于指示实际方法的结束。当每个迭代器调用都指示它们自己的回调时,将调用最后

在记录“hi”之后,async没有执行回调并记录“ok”或错误

我的代码有什么问题?

引用文档:

迭代器(项,回调)
-应用于
arr
中每个项的函数。迭代器被传递一个
回调(err)
,一旦完成,就必须调用该回调。如果没有发生错误,则应在不带参数或带有显式
null
参数的情况下运行回调


结论:您忘记使用回调参数,因此也没有调用它。

async
为您的
迭代器
函数提供了两个重要参数:一个
和一个
回调
。第一个是数组中的实际数据项,第二个是函数,用于指示实际方法的结束。当每个迭代器调用都指示它们自己的回调时,将调用最后一个回调(带有日志('ok'))

所以你的代码应该是这样的:

async.each(spiders, function(){
    console.log('hi');
}, function(err) {
    if(err) { console.log(err);}
    else console.log('ok');
});
null
参数表示没有错误


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

您希望使用异步
forEach
\每个

async.each(spiders, function(item, callback) {
  console.log('spider: ' + item);
  callback(null);
}, function(err) {
  if (err) {
    return console.log(err);
  }
  console.log('ok');
});