2015-03-03 2 views
0

Я использую эту библиотеку для цепи асинхронных функций в моем nodejs приложение: https://github.com/yortus/asyncawaitКак остановить выполнение следующей функции с ожиданием async?

var chain = async(function(){ 

    var foo = await(bar()); 
    var foo2 = await(bar2()); 
    var foo3 = await(bar2()); 

} 

Так bar3 ждет за BAR2, чтобы закончить и bar2 ждет бар(), чтобы закончить. Хорошо. Но что я сделаю, чтобы остановить асинхронный блок от дальнейшего выполнения? Я имею в виду что-то вроде этого:

var chain = async(function(){ 

    var foo = await(bar()); 
    if(!foo){return false;} // if bar returned false, quit the async block 
    var foo2 = await(bar2()); 
    var foo3 = await(bar2()); 

} 

что лучше всего подходит для этого?

на данный момент я бросаю исключение в пределах панели и обработать исключение в пути:

chain().catch(function (err) { //handler, ie log message) 

Это работает, но это не выглядит правильно

+0

Не возвращает ли ложь, как вы написали, это просто работает? – Bergi

ответ

2

Я имею в виду что-то вроде этого ...

asyncawait поддерживает точно этот синтаксис. Просто return от функции:

var chain = async(function(){ 
    var foo = await(bar()); 
    if (!foo) return; 
    var foo2 = await(bar2()); 
    var foo3 = await(bar2()); 
}); 
+0

Это действительно работает - у меня была ошибка где-то еще –

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