我有一个数组,我需要按顺序异步处理。如果其中一个失败了,我需要继续处理剩下的,但是我需要跟踪这个错误,这样我就可以在整个过程的末尾做一些事情。
阅读文档,看起来这个特性并没有真正地内置到eachSeries中。似乎我必须在每个任务上调用callback(),这表明它总是成功的,并且自己跟踪错误。这是正确的吗?
发布于 2015-11-17 21:34:36
在这里自己跟踪错误并不一定是坏事:
var errors = [];
async.eachSeries([1,2,3], function(data, cb) {
if(some_error_case) {
errors.push(data);
}
cb(null);
}, function(data) {
console.log('errors happened: ', errors);
});即使有错误,也一定要调用cb(null),否则会过早停止循环。然后将任何错误推入errors数组,并在最后的回调中处理它们。
发布于 2017-08-06 00:57:33
同时,已经将reflect和reflectAll添加到异步中,以涵盖此场景。
示例(来自官方文档):
async.parallel([
async.reflect(function(callback) {
// do some stuff ...
callback(null, 'one');
}),
async.reflect(function(callback) {
// do some more stuff but error ...
callback('bad stuff happened');
}),
async.reflect(function(callback) {
// do some more stuff ...
callback(null, 'two');
})
],
// optional callback
function(err, results) {
// values
// results[0].value = 'one'
// results[1].error = 'bad stuff happened'
// results[2].value = 'two'
});医生:
异步反射
https://stackoverflow.com/questions/33766971
复制相似问题