JS Q biblioteca - adiar o erro de pegar
-
23-12-2019 - |
Pergunta
Eu estou descobrindo Kris Koval Q biblioteca e eu tenho um problema.Olha esse simples código:
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();
Eu espero ver:
Promise 1 OK
Promise 2 Failed
e, em seguida, mostrar o alerta "Não!", mas o alerta nunca mostra.Em vez de eu ver o aviso no meu console:
[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"]
Por que a rejeição não é tratado e como eu posso lidar com isso?
Solução
No then
função, você deve passar apenas o getPromise2
a função de, não o resultado de getPromise2()
getPromise1()
.then(getPromise2) // NOTE: We are not calling it here
.fail(function () {
console.log('Fail!');
})
.done();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow