Promise & 錯誤中斷請求 解決地獄回撥
阿新 • • 發佈:2022-03-28
執行流程 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); })