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

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

等待承諾鏈有什么問題?

等待承諾鏈有什么問題?

千萬里不及你 2019-08-23 09:51:26
等待承諾鏈有什么問題?我正在研究一個Angular 6應用程序,我被告知以下是一個反模式:await someFunction().then(result => {     console.log(result);});我意識到等待承諾鏈是毫無意義的。如果someFunction()返回一個promise,那么如果你正在等待它,則不需要一個promise鏈。你可以這樣做:const result = await someFunction();console.log(result);但我被告知等待一個承諾鏈可能會導致錯誤,或者它會破壞我的代碼中的東西。如果上面的第一個代碼片段與第二個代碼段完全相同,那么使用哪個代碼片段至關重要。第一個片段引入了哪個危險,第二個片段沒有?
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

在引擎蓋下,async / await就是承諾。

也就是說,當你有一些看起來像這樣的代碼時:

const result = await myAsyncFunction();   console.log(result):

這和寫作完全一樣:

myAsyncFunction().then(data => {
   const result = data; 
   console.log(result); });

之所以 - 你不應該混合async / await和.then鏈 - 是因為它令人困惑。

最好選擇一種風格,并堅持下去。

當你選擇一個時 - 你也可以選擇異步/等待 - 這更容易理解。


查看完整回答
反對 回復 2019-08-23
?
萬千封印

TA貢獻1891條經(jīng)驗 獲得超3個贊

我被告知等待一個承諾鏈會破壞我的代碼中的東西。

不一定,你的兩個代碼片段確實工作相同(只要someFunction()真正返回一個promise)。

使用哪一個有什么關系。第一個片段引入了哪個危險,第二個片段沒有?

理解和維護起來比較困難,混合不同風格會令人困惑。混亂導致錯誤。

考慮您需要在調用位置添加另一個promise console.log()調用,甚至是函數(shù)的條件返回。你可以await像在函數(shù)中的其他地方一樣使用回調,你需要回調return的結果then,甚至可以return從外部函數(shù)?所有這些問題甚至都沒有出現(xiàn)在第一個片段中。雖然它們可以很容易地回答您的玩具示例,但在實際代碼中可能并不那么容易,而且控制流程更加復雜和嵌套。

所以你應該更喜歡更簡潔和干凈的。粘到await一致性,避免thenasync function小號1。


查看完整回答
反對 回復 2019-08-23
?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

如果你的then代碼返回了一個promise而不是調用console.log,那么你的第一個例子就是await,但你的第二個例子不會。

當您使用時async/await,您將在try/catch塊中捕獲您的拒絕。您的代碼將更少嵌套和更清晰。

使用then通常會導致更多嵌套,并且更難以閱讀代碼。

await無論是否返回,你都可以做任何事情promise。有時這種未來證明調用一種方法可能有一天會變得異步或只返回一個承諾而不聲明異步。

缺點是復雜性,性能和兼容性,所有這些都與收益相比顯得蒼白無力。

我發(fā)現(xiàn),如果你在調用函數(shù)后依賴函數(shù)的返回值,它是或者最終會異步,那么裝飾調用你的函數(shù)await會讓你心滿意足,無論它是當前的異步還是返回一個promise。


查看完整回答
反對 回復 2019-08-23
  • 3 回答
  • 0 關注
  • 358 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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