1. 程式人生 > 其它 >Promise & 錯誤中斷請求 解決地獄回撥

Promise & 錯誤中斷請求 解決地獄回撥

執行流程 reject時直接彈出 resolve時繼續

該部分程式碼為問題程式碼

reject b 沒有像預期一樣 直接跳轉至 末尾的 catch
若有解決方法請告知(當前解決方法為, 判斷res狀態)
使用 throw 連結會中斷

var a = function() {
    return new Promise(function(resolve,reject){
        console.log('run a');
        setTimeout(()=>{
            console.log('back a');
            resolve(3);
        },1000)
    })
}
var b = function() {
    return new Promise(function(resolve,reject){
        console.log('run b');
        setTimeout(()=>{
            console.log('back b');
            reject('b');
        },1000)
    })
}

var c = function() {
    return new Promise(function(resolve,reject){
        console.log('run c');
        setTimeout(()=>{
            console.log('back c');
            resolve();
        },1000)
    })
}

a().then(()=>{
    console.log('cb a');
    b()
}).then(()=>{
    console.log('cb b');
    throw {err b!'}
    c();
}).catch((err)=>{
    console.log(err);
})