4
當我建立我的諾言,並調用函數失敗,錯誤應該由許權.catch功能抓到?但在console.log中,我仍然將它作爲未捕獲的(也會觸發.catch函數)。爲什麼?或者這是打算?我覺得我在概念上有點不對勁,想要開悟!Javascript的承諾:爲什麼被捕獲的異常仍記錄爲未捕獲?
請看下面的例子:
var A = {
loadingPromise: null,
loadingPromiseFail: null,
loadingPromiseResolver: null,
init: function() {
this.loadingPromise = new Promise(
function(resolve, fail) {
this.loadingPromiseResolver = resolve;
this.loadingPromiseFail = fail;
}.bind(this)
);
this.loadingPromise.then(function(data) {
console.log('success');
}.bind(this));
this.loadingPromise['catch'](function(e, x) {
console.log('error', e);
}.bind(this));
},
doSomething: function() {
setTimeout(function(){
this.loadingPromiseFail('404');
}.bind(this), 1000);
}
}
A.init();
A.doSomething();
的console.log:
error 404
uncaught exception: 404
爲什麼是第二?
另外這裏: https://jsfiddle.net/Paflow/4g7yj38b/6/
好吧其餘沒有真正的影響,謝謝我沒想到的漁獲() - 函數的東西附加到那麼() - 功能,但在同一級別存在的東西。我很可能會預料到,你也可以添加幾個catch()函數,並且在任何失敗的情況下,所有的函數都會被調用。正如我的想法,一些概念上的誤解。謝謝你的解釋! – Paflow