質問

Kris Koval Qライブラリを発見しています、そして私は問題があります。この簡単なコードを見てください:

function getPromise1() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 1 OK');
        deferred.resolve();
    }, 1000);
    return deferred.promise;
}


function getPromise2() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 2 Failed');
        deferred.reject();
    }, 1000);
    return deferred.promise;
}

getPromise1()
    .then(getPromise2())
    .fail(function () {
        alert('Fail!');
    })
    .done();
.

見ることを期待しています:

Promise 1 OK
Promise 2 Failed
.

でアラートを表示します。ただし、アラートは表示されません。その代わりに私のコンソールで警告が表示される:

[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"] 
.

拒否が処理されていないのか、そしてどのように処理することができますか?

役に立ちましたか?

解決

then関数では、getPromise2

の結果ではなく、getPromise2()関数だけを渡す必要があります。
getPromise1()
    .then(getPromise2)            // NOTE: We are not calling it here
    .fail(function () {
        console.log('Fail!');
    })
    .done();
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top