Promise - 07 Promise 鏈?zhǔn)秸{(diào)用對(duì)比回調(diào)地獄的優(yōu)點(diǎn)

1: 調(diào)用方式更加靈活
舊的: 必須在啟動(dòng)異步調(diào)用之前指定
promise: 啟動(dòng)Promise => 返回Promise對(duì)象 => 給promise對(duì)象綁定對(duì)調(diào)函數(shù)

2: 支持鏈?zhǔn)秸{(diào)用,避免調(diào)用地獄
回調(diào)地獄: 回調(diào)函數(shù)嵌套使用,外部函數(shù)異步執(zhí)行返回的結(jié)果是內(nèi)部函數(shù)執(zhí)行的條件
回調(diào)地獄的缺點(diǎn): 不便于閱讀,不便于異常處理

終極解決方案: async await

回調(diào)地獄
 doSomething((result) => {
   doSecondFunc (result, (newResult) => {
      doThirdFunc (newResult, (finalResult) => {
          console.log('回調(diào)地獄', finalResult)
      },failureCallback)
    },failureCallback)
}, failureCallback)
Promise 鏈?zhǔn)秸{(diào)用
doSomething()
  .then(r => doSecondFunc(r))
  .then(newResult => doThirdFunc(newResult))
  .then(finalResult => {
    console.log(finalResult)
  }).catch(failureCallback)
async await 是終極解決回調(diào)函地獄的方法
async function request () {
  try {
    const result = await doSomething();
    const newResult = await doSecondFunc();
    const finalResult = await doThirdFunc();
    console.log(finalResult)
  } catch (err) {
    failureCallback(err)
  }


}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容