【问题标题】:Async.js jump out of seriesAsync.js 跳出系列
【发布时间】:2015-03-29 00:10:31
【问题描述】:

我用的是曹兰的辉煌Async.js。我正在执行一系列功能。在第一个函数中,我有一个条件应该跳过所有其余系列的函数,直接进入最终回调:

async.series([
    function one (next) {
        if(!condition) {
            // skip all the other functions and go to final callback
        }
        // do stuff
        return next();
    },
    function two (next) {
        // do stuff
        return next();
    },
    function three (next) {
        // do stuff
        return next();
    }
], function (err) {
    // final callback stuff
});

所以如果函数中的一个条件不满足,直接进入最终回调。

Async series docs 状态

如果系列中的任何函数将错误传递给其回调,则不再运行任何函数,并立即使用错误的值调用回调。

但是在我看来,抛出错误并不是一个干净的方法。为了能够在最终回调中正确处理“真实”错误,我必须引入一个假错误......还有其他干净的方法吗?

【问题讨论】:

    标签: node.js async.js


    【解决方案1】:

    现在跟进我是如何解决这个问题的。我确实抛出了一个特定错误以跳过该系列的其余部分,从最终回调中的一般错误处理中排除此特定错误:

        async.series([
            function one (next) {
                if(!condition) {
                    return next('condition_not_met');
                }
                return next();
            },
            function two (next) {
                // this isn't executed if condition isn't met in function one
                return next();
            }
        ], function (err) {
            if (err && err !== 'condition_not_met') {
                // general error handling
            }
            // do more stuff
        });
    

    如果这是 async.series 的预期使用方式,或者是否有更优雅的方式来处理我的场景,我仍然会感兴趣。干杯。

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 2021-04-04
      • 1970-01-01
      • 2016-07-28
      相关资源
      最近更新 更多