2017-03-03 62 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 
    } 
});