Frage

Ich entdecke die Kris Koval Q-Bibliothek und habe ein Problem.Schauen Sie sich diesen einfachen Code an:

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

Ich erwarte Folgendes zu sehen:

Promise 1 OK
Promise 2 Failed

und dann die Warnung „Fehler!“ anzeigen, aber die Warnung wird nie angezeigt.Stattdessen wird in meiner Konsole eine Warnung angezeigt:

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

Warum wird eine Ablehnung nicht bearbeitet und wie kann ich damit umgehen?

War es hilfreich?

Lösung

Im then Funktion, Sie sollten nur die übergeben getPromise2 Funktion, nicht das Ergebnis von getPromise2()

getPromise1()
    .then(getPromise2)            // NOTE: We are not calling it here
    .fail(function () {
        console.log('Fail!');
    })
    .done();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top