私はPromiseをビルドして失敗関数を呼び出すと、エラーは約束のための.catch関数によって捕捉されるはずですか?しかし、console.logでは、まだキャッチされていません(.catch関数もトリガーされます)。どうして?それともこれは意図されていますか?私は概念的に間違ったものを得て、啓発されたいと思っています!Javascript Promise:キャッチされた例外がまだキャッチされていないとして記録されるのはなぜですか?
は、次の例を考えてみましょう:
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()関数をthen()同じレベルに存在するものがあります。おそらく私はいくつかのcatch()関数を追加することができ、失敗した場合にはすべてが呼び出されることを期待していました。私が思ったように、いくつかは概念的に誤解しています。それを説明してくれてありがとう! – Paflow