数组中每个对象的 NodeJS 异步
NodeJS async for each object in array
我的问题是我有 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 函数吗?
内部回调的第一个参数是非空的(即 '0'
),这被解释为错误,导致函数在处理完第一个元素后终止。就让 callback3(null, '0')
.
对于 Node 中的几乎所有回调,第一个参数通常是一个 error
对象。 (目前我想不出有什么例外,但我们还是坚持 "almost" 吧。)
希望能解决您的问题。
此外,如果您仅将 async
用于一些功能,您应该避免使用它(例如 something like this)。我在使用 async
时遇到过大型数组的问题。这与您的原始问题无关;只是一个建议。
我的问题是我有 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 函数吗?
内部回调的第一个参数是非空的(即 '0'
),这被解释为错误,导致函数在处理完第一个元素后终止。就让 callback3(null, '0')
.
对于 Node 中的几乎所有回调,第一个参数通常是一个 error
对象。 (目前我想不出有什么例外,但我们还是坚持 "almost" 吧。)
希望能解决您的问题。
此外,如果您仅将 async
用于一些功能,您应该避免使用它(例如 something like this)。我在使用 async
时遇到过大型数组的问题。这与您的原始问题无关;只是一个建议。