第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

不能從異步Promise執(zhí)行器函數(shù)中引發(fā)錯誤

不能從異步Promise執(zhí)行器函數(shù)中引發(fā)錯誤

ABOUTYOU 2019-12-06 12:39:21
我一直在試圖從概念上理解以下代碼為何無法捕獲throw。如果async從new Promise(async (resolve, ...零件中刪除關(guān)鍵字,則它可以正常工作,因此它與Promise執(zhí)行程序是異步函數(shù)這一事實(shí)有關(guān)。(async function() {  try {    await fn();  } catch(e) {    console.log("CAUGHT fn error -->",e)  }})();function fn() {  return new Promise(async (resolve, reject) => {    // ...    throw new Error("<<fn error>>");    // ...  });}此處,此處和此處的答案重復(fù)為“如果您在任何其他異步回調(diào)中,則必須使用reject”,但是通過“異步”,它們不是在引用async函數(shù),因此,我認(rèn)為它們的解釋在這里不適用(如果這樣做的話,我不知道怎么做。如果代替throw我們使用reject,上述代碼可以正常工作。我想從根本上理解為什么throw在這里不起作用。謝謝!
查看完整描述

2 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個贊

這是Promise構(gòu)造函數(shù)antipattern的async / await版本!


從來沒有 過使用async function作為一個Promise執(zhí)行程序功能(即使你可以把它工作1)!


[1:通過調(diào)用resolve而reject不是使用returnand throw語句]


通過“異步”他們不是指async功能,所以我認(rèn)為他們的解釋在這里不適用


他們也可以。一個簡單的例子就不能工作


new Promise(async function() {

    await delay(…);

    throw new Error(…);

})

相當(dāng)于


new Promise(function() {

    return delay(…).then(function() {

        throw new Error(…);

    });

})

現(xiàn)在很清楚,該代碼throw位于異步回調(diào)中。


該P(yáng)romise構(gòu)造也只能望塵莫及同步異常,和一個async function 不會拋出 -它總是會返回一個承諾(這可能會遭到拒絕,雖然)。當(dāng)promise正在等待resolve被調(diào)用時,該返回值將被忽略。


查看完整回答
反對 回復(fù) 2019-12-06
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊

您實(shí)際上可以做的更短:return delay(…).then(function() { throw new Error(…); }); 

查看完整回答
反對 回復(fù) 2019-12-06
  • 2 回答
  • 0 關(guān)注
  • 847 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號