Bibliothèque JS Q - différer la détection des erreurs
-
23-12-2019 - |
Question
Je découvre la bibliothèque Kris Koval Q et j'ai un problème.Regardez ce code simple :
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();
Je m'attends à voir :
Promise 1 OK
Promise 2 Failed
puis affichez l'alerte "Échec!", mais l'alerte ne s'affiche jamais.Au lieu de cela, je vois un avertissement dans ma console :
[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"]
Pourquoi le rejet n’est-il pas géré et comment puis-je le gérer ?
La solution
Dans le then
fonction, vous devez passer juste le getPromise2
fonction, pas le résultat de getPromise2()
getPromise1()
.then(getPromise2) // NOTE: We are not calling it here
.fail(function () {
console.log('Fail!');
})
.done();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow