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

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

“退貨等待承諾”與“退貨承諾”之間的區(qū)別

“退貨等待承諾”與“退貨承諾”之間的區(qū)別

牛魔王的故事 2019-11-14 09:50:48
給定下面的代碼示例,行為上是否有任何差異,如果有,這些差異是什么?return await promiseasync function delay1Second() {  return (await delay(1000));}return promiseasync function delay1Second() {  return delay(1000);}據(jù)我了解,第一個將在異步函數(shù)內(nèi)進(jìn)行錯誤處理,并且錯誤會冒出異步函數(shù)的Promise。但是,第二個需要較少的滴答聲。這個對嗎?該片段只是一個返回Promise供參考的常用功能。function delay(ms) {  return new Promise((resolve) => {    setTimeout(resolve, ms);  });}
查看完整描述

3 回答

?
互換的青春

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

在大多數(shù)情況下,return和之間沒有可觀察到的差異return await。這兩個版本的delay1Second觀察行為完全相同(但根據(jù)實(shí)現(xiàn)的不同,該return await版本可能會使用更多的內(nèi)存,因?yàn)镻romise可能會創(chuàng)建一個中間對象)。


但是,正如@PitaJ指出的,在一種情況下存在差異:如果returnor return await嵌套在try- catch塊中??紤]這個例子


async function rejectionWithReturnAwait () {

  try {

    return await Promise.reject(new Error())

  } catch (e) {

    return 'Saved!'

  }

}


async function rejectionWithReturn () {

  try {

    return Promise.reject(new Error())

  } catch (e) {

    return 'Saved!'

  }

}

在第一個版本中,異步函數(shù)在返回結(jié)果之前等待被拒絕的承諾,這將導(dǎo)致拒絕變成異常并到達(dá)catch子句。因此,該函數(shù)將返回一個解析為字符串“ Saved!”的promise。


但是,該函數(shù)的第二個版本確實(shí)直接返回了被拒絕的承諾,而無需在async函數(shù)中等待它,這意味著不調(diào)用該catch案例,而是由調(diào)用者獲取拒絕。


查看完整回答
反對 回復(fù) 2019-11-14
?
心有法竹

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

這是一個很難回答的問題,因?yàn)樵趯?shí)踐中,這取決于您的編譯器(可能babel)實(shí)際渲染的方式async/await。清楚的是:

  • 盡管第一個實(shí)現(xiàn)的鏈中可能少一個,但兩個實(shí)現(xiàn)的行為應(yīng)相同Promise

  • 特別是如果您刪除了不必要的await,則第二個版本將不需要編譯器提供任何額外的代碼,而第一個版本則需要。

因此,從代碼性能和調(diào)試的角度來看,第二個版本是可取的,盡管只是略微如此,而第一個版本具有一點(diǎn)易讀性,因?yàn)樗宄乇砻魉祷亓顺兄Z。


查看完整回答
反對 回復(fù) 2019-11-14
  • 3 回答
  • 0 關(guān)注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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