日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JS異步堆棧追蹤之為什么await勝過Promise

瀏覽:159日期:2024-03-31 11:06:06
概述

async/await和Promise的根本區(qū)別在于await fn()暫停當(dāng)前函數(shù)的執(zhí)行,而promise.then(fn)在將fn調(diào)用添加到回調(diào)鏈后,繼續(xù)執(zhí)行當(dāng)前函數(shù)。

const fn = () => console.log(’hello’)const a = async () => { await fn() // 暫停 fn 的執(zhí)行}// 調(diào)用 a 時,才恢復(fù) fn 的執(zhí)行a() // 'hello'const promise = Promise.resolve()// 將 fn 添加到回調(diào)鏈后,繼續(xù)執(zhí)行 fnpromise.then(fn) // 'hello'

在堆棧追蹤的上下文中,這種差異非常顯著。

當(dāng)一個Promise鏈(無論是否脫糖化)在任何時候拋出一個未經(jīng)處理的異常時,JavaScript引擎都會顯示一條錯誤信息和(希望)記錄一個有用的堆棧追蹤。

作為一名開發(fā)人員,無論您使用的是普通的Promise還是async await,您都會期望這樣。

Promise

想象一個場景,當(dāng)對異步函數(shù)b的調(diào)用解析時,調(diào)用函數(shù)c:

const b = () => Promise.resolve()const a = () => { b().then(() => c())}

當(dāng)調(diào)用a時,將同步發(fā)生以下情況:

b被調(diào)用并返回一個Promise,該P(yáng)romise將在將來某個時刻解決。 .then回調(diào)(實際上是調(diào)用c())被添加到回調(diào)鏈中( V8 術(shù)語中,[…]被添加為解析處理程序)。

之后,我們完成了在函數(shù)a的主體中執(zhí)行代碼。a永遠(yuǎn)不會被掛起,當(dāng)對b的異步調(diào)用解析時,上下文已經(jīng)消失了。

想象一下如果b(或c)異步拋出異常會發(fā)生什么?理想情況下,堆棧追蹤應(yīng)該包括a,因為b(或c)是從那里調(diào)用的,對吧?既然我們不在參考a了 ,那怎樣能做到呢?

為了讓它工作,JavaScript 引擎需要在上面的步驟之外做一些事情:它在有機(jī)會的時候捕獲并存儲堆棧追蹤。

在V8中,堆棧追蹤附加到b返回的Promise。當(dāng)Promise實現(xiàn)時,堆棧追蹤將被傳遞,以便c可以根據(jù)需要使用它。

b()[a] -> b().then()[a] -> c[a?:a]

捕獲堆棧追蹤需要時間(即降低性能);存儲這些堆棧追蹤需要內(nèi)存。

async/await

下面是同樣的程序,使用async/await而不是Promise編寫:

const b = () => Promise.resolve()const a = async () => { await b() c()}

使用await,即使在await調(diào)用中不收集堆棧追蹤,我們也可以恢復(fù)調(diào)用鏈。

這是可能的,因為a被掛起,正在等待b解決。如果b拋出異常,則可以按需以這種方式重建堆棧追蹤。

如果c拋出異常,堆棧追蹤可以像同步函數(shù)那樣構(gòu)造,因為發(fā)生這種情況時,我們?nèi)栽赼上下文中。

通過遵循以下建議,使 JavaScript 引擎能夠以更高效的方式處理堆棧追蹤:

偏好async/await勝過Promise。 使用 @babel/preset env避免不必要的async/await傳輸。

以上就是JS異步堆棧追蹤之為什么await勝過Promise的詳細(xì)內(nèi)容,更多關(guān)于Javascript的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
美女久久精品| 欧美影院精品| 欧美 日韩 国产一区二区在线视频 | 日本欧美韩国一区三区| 国产精品欧美三级在线观看| 麻豆视频在线看| 亚洲欧美日韩精品一区二区 | 丰满少妇一区| 九一精品国产| 日韩精品欧美精品| 精品视频黄色| 性色一区二区| 欧美极品一区二区三区| 色爱av综合网| 日韩高清在线不卡| 五月激情久久| 日韩国产欧美一区二区三区| 欧美日韩视频免费观看| 亚洲精品一二三**| 亚洲三级欧美| 亚州精品视频| 国产成人精品免费视| 欧美日韩在线观看首页| 欧美va亚洲va日韩∨a综合色| 欧美69视频| 日本高清久久| 中文字幕在线高清| 亚洲免费在线| 青青草91视频| 国产福利片在线观看| 午夜日韩在线| 日韩av二区在线播放| 蜜桃久久久久| 欧美 日韩 国产一区二区在线视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产亚洲精品美女久久| 色爱av综合网| 亚洲精品看片| 国产成人免费| 国产亚洲在线| 欧美激情久久久久久久久久久| 日韩欧美午夜| 亚洲91在线| 国产精品成人a在线观看| 蜜臀av免费一区二区三区| 日韩激情啪啪| 久久精品导航| 奇米亚洲欧美| 美女网站视频一区| 日韩动漫一区| 日本高清不卡一区二区三区视频| 亚洲涩涩av| 久久亚洲黄色| 蜜桃视频在线观看一区| 国产精品99一区二区三| 亚洲精品看片| 中文字幕日韩欧美精品高清在线| 日韩av中文在线观看| 91成人网在线观看| 日韩成人免费| 久久爱www成人| 亚洲精品麻豆| 一区免费视频| 亚洲二区在线| 午夜久久中文| 久久99国产精品视频| 欧美视频久久| 综合精品一区| 国产亚洲在线| 午夜国产一区二区| 精品成人免费一区二区在线播放| 久久亚洲人体| 国产精品高清一区二区| 日本午夜精品| 日本在线观看不卡视频| 一区二区国产精品| 蜜臀va亚洲va欧美va天堂| 中文在线一区| 亚洲激情社区| 欧美日韩国产综合网| 亚洲网站视频| 亚洲先锋成人| 国产一区二区中文| 蜜桃成人av| av亚洲免费| 在线精品小视频| 免费观看不卡av| 午夜日韩在线| 亚洲自啪免费| 国产免费成人| 天堂成人国产精品一区| 热久久国产精品| 亚洲日本在线观看视频| 亚洲制服一区| 日韩精品免费观看视频| 亚洲91在线| 久久国产人妖系列| 国产精品美女午夜爽爽| 国产精品777777在线播放| 老司机免费视频一区二区三区| 久久精品二区亚洲w码| 日本激情一区| 成人午夜毛片| 国产91精品对白在线播放| 久久国产亚洲精品| 午夜国产一区二区| 免费在线看一区| 色8久久久久| 国产欧美大片| 粉嫩av一区二区三区四区五区| 久久女人天堂| 久久久亚洲一区| 在线国产一区| 亚洲精品视频一二三区| 欧美日韩亚洲一区二区三区在线| 国产精品宾馆| 国产伦久视频在线观看| 国精品一区二区三区| 免费观看久久久4p| 亚州精品视频| 久久这里只有| 99久久久久国产精品| 免费视频久久| 国产精品久久久久久久久久齐齐| 伊伊综合在线| 视频在线观看一区| 欧美日韩在线精品一区二区三区激情综合 | 久久久久久色 | www.九色在线| 好看的av在线不卡观看| 视频一区中文字幕国产| 国产欧美在线| 日韩成人高清| 一区二区精品| 精品不卡一区| 日韩午夜免费| 欧美日韩亚洲一区| 国产综合色区在线观看| 免费人成在线不卡| 国产精品777777在线播放| 亚洲精品一区三区三区在线观看| 99在线精品免费视频九九视| 日韩精品久久久久久| 福利一区二区免费视频| 国产精品免费看| 久久精品av麻豆的观看方式| 亚洲性色av| 婷婷视频一区二区三区| 在线人成日本视频| 亚洲一区二区免费在线观看| 精品少妇av| 蜜臀久久99精品久久久画质超高清| 久久免费精品| 视频精品一区二区| 久久久久久色| 亚洲激情五月| 久久爱www成人| 国产精品毛片一区二区三区| 蜜桃久久久久| 爽爽淫人综合网网站| 精品欧美日韩精品| 亚洲作爱视频| 福利一区视频| 日本va欧美va瓶| 欧美亚洲国产一区| 欧美国产精品| 亚洲一区av| 99视频精品全部免费在线视频| 国产乱码精品一区二区三区亚洲人| 亚洲二区视频| 精品视频自拍| 日韩中文字幕一区二区高清99| 伊伊综合在线| 国产乱码精品一区二区三区亚洲人| 91高清一区| 精品欠久久久中文字幕加勒比| 亚洲色图网站| 国产韩日影视精品| 水蜜桃久久夜色精品一区| 日本vs亚洲vs韩国一区三区二区| 久久久久一区| 精品国产一区二区三区av片| 日本中文字幕视频一区| av亚洲免费| 黄色aa久久| 欧美日本三区| 一区二区三区四区日韩| 国产综合欧美| av日韩中文| 国产精品videossex| 免费人成网站在线观看欧美高清| 91免费精品| 久久国产精品美女| 欧美亚洲三区| 中文字幕一区二区三区在线视频| 激情欧美国产欧美| 神马午夜在线视频| 精品三级国产| 欧美1区2区3| 欧美亚洲tv|