如何在nodejs中删除async.series流

时间:2017-03-03 14:12:32

标签: node.js asynchronous series

我使用async.series作为;

async.series([
    function(callback) {
      callback();
    },
    function(callback) {
        if(condition is satified){
           //continue to the next function  
           callback();        
        }else{
           /*condition is not satisfied, do not continue cut the async.series
       and continue to from
        //continue from here part  */
        }

    },
    function(callback) {
       //if condition in second function is not satisfied skip
       callback();
    },
    function(callback) {
       //if condition in second function is not satisfied skip 
       callback();
    }
]);

//continue from here

例如,假设第二个函数中存在条件。如果条件不满意,我想削减async.series

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您必须运行错误非空的回调:

callback(something);

而不是:

callback();

如果您添加回调,请执行async.series

,这样您就可以在此处收到错误
async.series([
    function(callback) {
        if (someCondition) {
            // this will stop the async.series flow:
            return callback('some error');
        }
        // this will continue the async.series flow:
        callback();
    },
    // more functions go here
], (err) => {
    if (err) {
        // here you will get the error that was signaled
        // by some of the functions
    } else {
        // everything completed with no errors
    }
});

如果您的所有函数都返回了不同的错误,那么您可以检查哪一个函数终止了async.series流。

答案 1 :(得分:0)

callback函数有2个参数。它的签名是 -

callback(error, data);

如果在第二个函数中收到错误,则可以在回调中传递该错误。因此,series()函数将停止执行,并将调用其错误处理程序。所以这样做 -

async.series([
    function(callback) {
      callback();
    },
    function(callback) {
        if(condition is satified){
           //continue to the next function  
           callback();        
        }else{
           callback('This is an error');
           /*condition is not satisfied, do not continue cut the async.series
        and continue to from
        //continue from here part  */
    }
], function(error, result){
    if(error){
        // execution is stopped at 2nd function
        console.log(error); // This is an error
    }
});