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

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

JS異步堆棧追蹤之為什么await勝過(guò)Promise

瀏覽:164日期: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 時(shí),才恢復(fù) fn 的執(zhí)行a() // 'hello'const promise = Promise.resolve()// 將 fn 添加到回調(diào)鏈后,繼續(xù)執(zhí)行 fnpromise.then(fn) // 'hello'

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

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

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

Promise

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

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

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

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

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

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

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

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

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

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

async/await

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

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

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

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

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

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

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

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

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜臀av免费一区二区三区| 国产日韩一区二区三区在线| 国产日韩精品视频一区二区三区| 亚洲人妖在线| 91午夜精品| 精品中文在线| 韩国三级一区| 亚洲黄色免费av| 一本一道久久a久久精品蜜桃| 石原莉奈一区二区三区在线观看| 日韩国产欧美视频| 免费在线亚洲欧美| 肉色欧美久久久久久久免费看| 久久国产中文字幕| 亚洲精品影院在线观看| 欧美精品三级在线| 国产美女高潮在线| 99综合视频| 国产欧美自拍| 日本欧美不卡| 一区二区三区四区在线观看国产日韩| 久久国产精品色av免费看| 国产成人77亚洲精品www| 免费不卡中文字幕在线| 欧美一区成人| 国产 日韩 欧美一区| 日韩专区欧美专区| 精品国产午夜肉伦伦影院 | 亚洲黄色免费av| 国产精品美女| 国产精品大片免费观看| 99热精品久久| 青青伊人久久| 亚洲国产专区| 国产亚洲一卡2卡3卡4卡新区| 国产夫妻在线| 日韩欧美2区| 久久中文亚洲字幕| 国产精品一区二区精品| 99精品在线观看| 国产探花在线精品一区二区| 国产一区久久| 精品欧美日韩精品| 亚洲人妖在线| 中文字幕一区久| 日韩1区2区3区| 亚洲www啪成人一区二区| 日韩高清成人在线| 亚洲国产日韩欧美在线| 国产伦精品一区二区三区在线播放 | 日韩精品一区二区三区免费观看| 最新国产精品久久久| 最近高清中文在线字幕在线观看1| 亚洲青青久久| 亚洲成人免费| 91亚洲自偷观看高清| 日韩激情网站| 免费日韩视频| 激情综合在线| 麻豆91小视频| 日韩福利视频导航| 红桃视频亚洲| 国产美女高潮在线观看| 国产欧美另类| 日本不卡一区二区三区| 国产精品毛片一区二区三区| 亲子伦视频一区二区三区| 国产精品久久久久久久久久白浆 | 国产成人精品亚洲日本在线观看| 欧美日韩一区二区国产| 蜜臀av一区二区三区| 在线一区免费| 欧美亚洲激情| av一区在线| 成人美女视频| 六月婷婷综合| 成午夜精品一区二区三区软件| 91成人小视频| 日韩午夜视频在线| 在线 亚洲欧美在线综合一区| 欧美aa一级| 国产美女高潮在线观看| 国产免费av一区二区三区| 亚洲精品一级二级三级| 综合激情网...| 日本一区二区三区视频在线看| 爽好多水快深点欧美视频| 亚洲一区日本| 美女日韩在线中文字幕| 美女网站久久| 综合一区在线| 欧美亚洲一级| 亚洲精品极品少妇16p| 日韩一级网站| 免费日本视频一区| 日韩中文字幕91| 综合色就爱涩涩涩综合婷婷| 久久午夜视频| 中文字幕日韩亚洲| 日韩毛片一区| 国产精品色婷婷在线观看| 91在线成人| 麻豆视频观看网址久久| 乱一区二区av| 精品免费av在线| 欧美日韩免费观看一区=区三区| japanese国产精品| 美女国产一区| 欧美一级二区| 精品国产不卡| 日韩高清不卡| 日韩午夜精品| 亚洲午夜免费| 国产伦精品一区二区三区千人斩| 国产精品videossex久久发布| 久久精品五月| 99久久激情| 免费久久精品视频| 国产乱码精品一区二区亚洲| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 午夜欧美精品| 蜜臀av在线播放一区二区三区| 欧美日韩精品一区二区三区在线观看| 国产精品久久久久77777丨| 岛国av在线网站| 亚洲欧美日韩国产一区二区| 欧美日一区二区三区在线观看国产免| 国产精品成人a在线观看| 欧美91精品| 欧美伊人久久| 日韩精品免费一区二区在线观看| 中文精品在线| 国产精品成人一区二区网站软件| 高清日韩欧美| 美女91精品| 国语精品一区| 亚洲欧美视频| 精品少妇一区| 亚洲丝袜啪啪| 中文字幕人成乱码在线观看| 日韩在线播放一区二区| 国产激情久久| 午夜在线观看免费一区| 国产区精品区| 欧美日韩黑人| 久久久国产精品入口麻豆| 亚洲黄色影院| 欧美a一区二区| 日韩视频一区| 欧美aa在线视频| 男女精品网站| 首页国产精品| 日韩精品三区四区| 婷婷激情久久| 麻豆精品在线视频| 中文不卡在线| 亚洲成av在线| 国产精品日本一区二区不卡视频| 久久精品卡一| 欧美国产极品| 亚洲色图国产| 亚洲91精品| 麻豆久久一区二区| 亚洲视频国产| 成人羞羞视频播放网站| 国产精品欧美一区二区三区不卡| 亚洲精品a级片| 国产成人精品一区二区三区在线| 日韩中文字幕无砖| 午夜久久影院| 日韩精品一卡| 国内精品麻豆美女在线播放视频| 亚洲视频电影在线| 亚洲高清二区| 超碰超碰人人人人精品| 免费看久久久| 欧美精品影院| 亚洲丝袜美腿一区| 欧美日韩国产亚洲一区| 精品免费视频| 国产精品网址| 日本亚洲最大的色成网站www| 欧美日韩国产探花| 99视频精品全国免费| 精品91福利视频| 国产欧美一区二区三区精品观看| 日韩专区在线视频| 亚洲一区二区毛片| 狠狠爱www人成狠狠爱综合网| 桃色一区二区| 色婷婷亚洲mv天堂mv在影片| 国产精品v一区二区三区| 日韩av一二三| 日韩精品亚洲专区在线观看| 黄色av一区| 亚洲综合精品四区| 国产精品美女久久久| 精品一区免费| 蜜桃成人av| 免费久久精品|