我正在发现 Kris Koval 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();
关于javascript - JS Q 库 - 延迟错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064865/