【发布时间】:2014-02-27 18:02:57
【问题描述】:
我正在发现 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"]
为什么不处理拒绝,我该如何处理?
【问题讨论】:
-
尝试添加这个。 Q.stopUnhandledRejectionTracking();使日志静音
-
我认为 Q.reject 应该有一个错误实例作为原因。例如
deferred.reject(new Error('rejected'));? -
警告不是问题。问题是未处理错误 - 函数 .fail(...) 从未被调用。
标签: javascript promise deferred q