1 回答

TA貢獻1826條經驗 獲得超6個贊
成功了reject的方案中,你需要找到一個辦法區分成功流程,和代碼運行過程中發生的錯誤。
比如step3里面出現了一個無法預估的異常,拋出了一個錯誤,這個時候對正常流程的處理和對異常流程的處理都混在promise給你提供的對異常流程的接口中了。
不要用異常處理邏輯來做正常處理流程,這個規則保證了代碼可讀性與可維護性。
用promise的方案很簡單。此外,正常處理流程(console.log("Done")
)和異常處理流程(console.error("Done, but all failed")
)可以清晰地分辨出:
console.log("start")
step1()
.catch(step2)
.catch(step3)
.catch(step4)
.then(() => console.log("Done"))
.catch(() => console.error("Done, but all failed"))
切換step1、step2……的返回就可以查到所有流程:
function step1(){ console.log(1); return Promise.reject(); }
function step2(){ console.log(2); return Promise.resolve(); }
function step3(){ console.log(3); return Promise.resolve(); }
function step4(){ console.log(4); return Promise.resolve(); }
添加回答
舉報