2017-03-03 63 views
0

我使用async.series作为;如何切断nodejs中的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

我该怎么办?

回答

0

你必须运行错误NOT NULL回调:中

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流。

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 
    } 
});