【问题标题】:NodeJS async for each object in array数组中每个对象的NodeJS异步
【发布时间】:2015-07-06 21:04:49
【问题描述】:

我的问题是我有 1 个包含多个对象的数组。 我需要为该数组中的所有单个对象做一些事情。 异步

但它不起作用?

代码:

console.log('Data: ' + data);

async.eachSeries(data, function (item, callback3) {
	console.log(item.id);
	callback3('0');
}, function done(err) {
	console.log('done');
});

这就是服务器记录的内容:

[root@bravo servers]# node app.js
[ { id: 1,
    ownerid: 11,
    topicid: 1,
    content: 'First comment',
    date: Sun Jun 21 2015 23:18:05 GMT+0200 (CEST) },
  { id: 2,
    ownerid: 11,
    topicid: 1,
    content: 'Another test',
    date: Mon Jun 22 2015 00:18:34 GMT+0200 (CEST) } ]
1
done

如您所见,它没有执行第二个,而是直接执行 done 函数?

【问题讨论】:

  • 当你没有任何异步要做的时候,你为什么要使用 async.js?使用普通循环。

标签: javascript arrays node.js async.js


【解决方案1】:

内部回调的第一个参数是非空的(即'0'),这被解释为错误,导致函数在处理完第一个元素后终止。就这样callback3(null, '0')

对于 Node 中的几乎所有回调,第一个参数通常是 error 对象。 (我暂时想不出有什么例外,不过还是坚持“差不多”吧。)

希望能解决您的问题。

此外,如果您仅将async 用于一些功能,您可能应该避免使用它(例如,通过使用something like this)。我在使用async 时遇到了大型数组的问题。这与您最初的问题无关;只是一个建议。

【讨论】:

  • 很高兴。如果您倾向于这样做,请使用0,而不是'0'
  • 我通常这样做,但这次当我将 0 放入其中时,它给出了未定义的错误,他将其发回并显示在网站上。我的脚本只知道响应 obj 为 0 时他不需要显示任何内容,所以我尝试了 '0' 但现在它已修复,谢谢!
猜你喜欢
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2017-02-10
  • 2014-02-15
  • 1970-01-01
  • 2015-08-18
相关资源
最近更新 更多