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