2015-09-14 4 views
2

Я использую асинхронный модуль с методом водопада.Как остановить выполнение водопада при ошибке в async из node.js?

async.waterfall([ 
     function(callback) { 
      ... 
      callback(err); 
     }, 
     function(result, callback) { 
      console.log("This function should not be executed"); 
     } 
    ], 
    function(err) { 
     if (err) { 
      next(err); 
      return; 
     } 
    } 
); 

Но вторая функция всегда выполняется. Как предотвратить это?

+1

Это не должно. Убедитесь, что 'err' является правдивым значением. – Bergi

+0

Удостоверьтесь, что всегда возвращаетесь при вызове обратного вызова раньше, иначе вы вызовете несколько обратных вызовов и непредсказуемое поведение во многих случаях - совет отсюда: caolan.github.io/async – gaborp

ответ

5

Попробуйте добавить return

async.waterfall([ 
     function(callback) { 
      ... 
      return callback(err); //note return here 
     }, 
     function(result, callback) { 
      console.log("This function should not be executed"); 
     } 
    ], 
    function(err) { 
     if (err) { 
      next(err); 
      return; 
     } 
    } 
); 
+0

Большое спасибо! Работает. – Sergiy

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