Async.js跳出系列

时间:2015-01-29 16:57:25

标签: node.js async.js

我正在使用Caolan的辉煌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

  

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

但抛出一个错误对我来说并不是一个干净的方法。能够处理"真实"在最后的回调中错误正确,我将不得不引入一个假的错误......还有其他的,干净的方式吗?

1 个答案:

答案 0 :(得分:0)

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

    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打算使用的方式 - 或者是否有更优雅的方式来处理我的方案。欢呼声。