首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Async.js eachSeries无错误停止

Async.js eachSeries无错误停止
EN

Stack Overflow用户
提问于 2015-11-17 21:05:15
回答 2查看 1.6K关注 0票数 0

我有一个数组,我需要按顺序异步处理。如果其中一个失败了,我需要继续处理剩下的,但是我需要跟踪这个错误,这样我就可以在整个过程的末尾做一些事情。

阅读文档,看起来这个特性并没有真正地内置到eachSeries中。似乎我必须在每个任务上调用callback(),这表明它总是成功的,并且自己跟踪错误。这是正确的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-17 21:34:36

在这里自己跟踪错误并不一定是坏事:

代码语言:javascript
复制
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数组,并在最后的回调中处理它们。

票数 5
EN

Stack Overflow用户

发布于 2017-08-06 00:57:33

同时,已经将reflectreflectAll添加到异步中,以涵盖此场景。

示例(来自官方文档):

代码语言:javascript
复制
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'
});

医生:

异步反射

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33766971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档