初學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);
});
因為b++的錯誤是在setTimeout這個function裡,不是在promise的function裡。