亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node promise問題,如何控制流程?

node promise問題,如何控制流程?

慕姐8265434 2018-10-16 13:30:59
現在我有step1, step2,step3,step4四個操作,都用promise了邏輯是只要有一個step成功就返回,不用執行下面的操作,有一個失敗,就執行下面的操作,例如,step1失敗,執行step2,如果成功,就不用執行下面的step3了以上操作用promise如何寫比較好呢?
查看完整描述

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(); }


查看完整回答
反對 回復 2018-11-06
  • 1 回答
  • 0 關注
  • 435 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號