3

このライブラリを使用して、nodejs アプリで非同期関数をチェーンしています: https://github.com/yortus/asyncawait

var chain = async(function(){

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

}

したがって、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());

}

これを処理するための最良のアプローチは何ですか?

現時点では、バー内で例外をスローし、例外を次のように処理します。

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

動作していますが、正しく見えません

4

2 に答える 2

5

私はこのようなことを意味します...</p>

asyncawait はまさにこの構文をサポートしています。関数からだけreturn

var chain = async(function(){
    var foo = await(bar());
    if (!foo) return;
    var foo2 = await(bar2());
    var foo3 = await(bar2());
});
于 2015-03-03T16:34:05.830 に答える