我在發現Kris Koval Q庫,我遇到了問題。看看這個簡單的代碼:JS 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();以沉默記錄 – KRUKUSA
我認爲Q.reject應該有一個錯誤實例作爲一個原因。例如'deferred.reject(new Error('rejected'));'? –
警告不是問題。問題是不處理錯誤 - 函數.fail(...)永遠不會被調用。 – luski