如何使用 async-await 停止执行下一个函数?

Art*_*ary 3 javascript node.js async-await ecmascript-2016

我正在使用这个库在我的 nodejs 应用程序中链接异步函数:https : //github.com/yortus/asyncawait

var chain = async(function(){

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

}
Run Code Online (Sandbox Code Playgroud)

所以 bar3 等待 bar2 完成,而 bar2 等待 bar() 完成。没关系。但是我该怎么做才能阻止异步块进一步执行?我的意思是这样的:

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

}
Run Code Online (Sandbox Code Playgroud)

处理这个问题的最佳方法是什么?

目前我在 bar 内抛出异常并以如下方式处理异常:

chain().catch(function (err) { //handler, ie log message)
Run Code Online (Sandbox Code Playgroud)

它正在工作,但看起来不对

Ber*_*rgi 5

我的意思是这样的……

asyncawait完全支持这种语法。只是return从功能:

var chain = async(function(){
    var foo = await(bar());
    if (!foo) return;
    var foo2 = await(bar2());
    var foo3 = await(bar2());
});
Run Code Online (Sandbox Code Playgroud)