javascript - 關於promise異常捕捉的一個問題,求各位大為解答
过去多啦不再A梦
过去多啦不再A梦 2017-06-12 09:28:47
0
1
648

初學promise,有個地方沒有理解,想請教下各位大大。 :

程式碼如下,我的問題是為什麼我在定時器裡面手寫了一個未定義的錯誤,它會導致控制台直接報錯了,而不是說拒絕然後輸出2?而如果我是reject()直接拒絕,控制台就不會報錯,如果不是在定時器裡面手寫,而是在外面手寫,也是正常的。 (這裡b是一個未定義變數)

var p = new Promise(function(resolve, reject) {
    setTimeout(function () {
        b++;
    },1000);
    //b++;
});
p.then(function(){
    console.log(1);
},function(){
    console.log(2);
});

按照上面這樣的話,就是控制台報錯。

而依照下面的話,就會捕捉到拒絕,輸出2

var p = new Promise(function(resolve, reject) {
    
    b++;
});
p.then(function(){
    console.log(1);
},function(){
    console.log(2);
});
过去多啦不再A梦
过去多啦不再A梦

全部回覆(1)
黄舟

因為b++的錯誤是在setTimeout這個function裡,不是在promise的function裡。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板