2

thenエラー処理のコンテキストでのこれらの呼び出しの違いは何ですか?

.then(functionThatReturnsPromise(arg))

.then(function() {
    return functionThatReturnsPromise(arg);
})

最初の例では、関数functionThatReturnsPromiseが をスローした場合error、catch ブロックは呼び出されず、bluebird はエラーを出力します。

Possibly unhandled Error: <msg>
4

1 に答える 1

3

最初のものはfunctionThatReturnPromise、前の promise が完了する前に実行されます! あなたが書くなら

blah()
.then( functionThatReturnsPromise(arg) )

そのような書き込み

var firstPromise = blah();
var x = functionThatReturnsPromise(arg)
firstPromise.then(x);

さらに、then コールバック関数が渡されることを期待していますが、promise オブジェクトを渡しています。正しく動作しないことは当然のことです。

于 2014-06-21T02:03:58.843 に答える