Biblioteca JS Q - Avvicinamento del differimento Errore
-
23-12-2019 - |
Domanda
Sto scoprendo Kris Kris Koval Q Library e ho un problema.Guarda questo codice semplice:
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();
.
Mi aspetto di vedere:
Promise 1 OK
Promise 2 Failed
.
e poi mostra Alert "Fail!", ma l'avviso non mostra mai.Invece di vedere avvertimento nella mia console:
[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"]
.
Perché il rifiuto non viene gestito e come posso gestirlo?
Soluzione
Nella funzione then
, è necessario passare solo la funzione getPromise2
, non il risultato di getPromise2()
getPromise1()
.then(getPromise2) // NOTE: We are not calling it here
.fail(function () {
console.log('Fail!');
})
.done();
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow