2015-01-29 8 views
0

Я использую блестящий Caolan Async.js. Я выполняю ряд функций. В первой функции, у меня есть условие, которое должно пропустить все остальные функции серии и непосредственно перейти к заключительному обратного вызова: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 состояния

Если какая-либо функция в серии передать ошибку в свой функции обратного вызова, не больше функций выполняются, и обратный вызов вызывается непосредственно со значением ошибки.

Но выброс ошибки не похож на чистый подход ко мне. Чтобы иметь возможность корректно обрабатывать «реальные» ошибки в последнем обратном вызове, я должен был бы ввести фальшивую ошибку ... Есть ли другой, чистый способ?

ответ

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 предназначено для использования - или если есть более элегантный способ обработки моего сценария. Приветствия.

Смежные вопросы