JS Q-Bibliothek – Fehlererkennung verzögern
-
23-12-2019 - |
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?
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