Библиотека JS Q - отложить обнаружение ошибок
-
23-12-2019 - |
Вопрос
Я открываю для себя Q-библиотеку Криса Коваля, и у меня возникла проблема.Посмотрите на этот простой код:
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();
Я ожидаю увидеть:
Promise 1 OK
Promise 2 Failed
а затем показывается предупреждение "Сбой!", но предупреждение так и не появляется.Вместо этого я вижу предупреждение в своей консоли:
[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"]
Почему отказ не обрабатывается и как я могу с этим справиться?
Решение
В then
функцию, вы должны передать только getPromise2
функция, а не результат getPromise2()
getPromise1()
.then(getPromise2) // NOTE: We are not calling it here
.fail(function () {
console.log('Fail!');
})
.done();
Не связан с StackOverflow