在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ try/catch無(wú)法捕獲promise.reject的問(wèn)題

try/catch無(wú)法捕獲promise.reject的問(wèn)題

function f2() {
  try {
    Promise.reject('出錯(cuò)了');
  } catch(e) {
    console.log(e)
  }
}
  • 執(zhí)行f2(),無(wú)法通過(guò)try/catch捕獲promise.reject,控制臺(tái)拋出Uncaught (in promise)
async function f() {
  try {
    await Promise.reject('出錯(cuò)了')
  } catch(e) {
    console.log(e)
  }
}
  • 為什么改成await/async后,執(zhí)行f()就能在catch中捕獲到錯(cuò)誤了,并不會(huì)拋出Uncaught (in promise)
回答
編輯回答
陌璃

21世紀(jì)了,用原生的async 和promise吧

2018年9月19日 10:25
編輯回答
寫榮

回答這個(gè)問(wèn)題,原理還是探究await到底執(zhí)行了什么操作?
await:表示暫停異步函數(shù)promise,等待任意表達(dá)式的執(zhí)行結(jié)果。
對(duì)于f2函數(shù),Promise.reject('出錯(cuò)了')異步執(zhí)行,但是沒有catch函數(shù)進(jìn)行reject處理。
對(duì)于f函數(shù),await Promise.reject('出錯(cuò)了')。相當(dāng)于在后面加一個(gè)catch處理方法,方法返回傳入的‘出錯(cuò)了’信息,所以不會(huì)報(bào)錯(cuò)。

2017年3月20日 14:46
編輯回答
心癌

這樣應(yīng)該就理解了吧,拒絕發(fā)生在未來(lái)。

function f2() {
  try {
    Promise.reject('出錯(cuò)了').catch(err => {
      console.log('2', err)
    });
    console.log('1')
  } catch (e) {
    console.log(e)
  }
}
2018年5月12日 00:54