亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
獎(jiǎng)勵(lì):使用活動(dòng)聽眾斷點(diǎn)
首頁(yè) web前端 js教程 在Chrome DevTools中調(diào)試異步代碼

在Chrome DevTools中調(diào)試異步代碼

Jul 31, 2025 am 12:02 AM
調(diào)試

在DevTools設(shè)置中啟用異步堆棧跟蹤,以在Promise.lose.then和等待的異步操作中保留呼叫堆棧,從而使您可以看到完整的執(zhí)行鏈。 2。在異步函數(shù)中直接設(shè)置斷點(diǎn),然后。 3.使用“暫停異?!?,并啟用“抓取異?!钡摹皶和!?,以捕獲無(wú)與倫比的拒絕和異步代碼中的錯(cuò)誤,否則可能會(huì)默默失敗。 4。在異步回調(diào)中插入console.trace()記錄異步調(diào)用堆棧和跟蹤執(zhí)行流,而無(wú)需暫停。 5。了解事件循環(huán)在任務(wù)(例如SettieMout)和Microtasks(例如,Promise...then)之間的區(qū)別,以便使用Console.Time()進(jìn)行定時(shí)測(cè)量,以更好地解釋定時(shí)和執(zhí)行順序。此外,使用事件偵聽器斷點(diǎn)暫停觸發(fā)異步代碼的DOM或網(wǎng)絡(luò)事件,有助于跟蹤異步操作的起源。啟用異步堆棧,暫停例外和使用console.trace()有效地涵蓋了JavaScript中大多數(shù)真實(shí)的異步調(diào)試場(chǎng)景。

在Chrome DevTools中調(diào)試異步代碼

在JavaScript中調(diào)試異步代碼可能很棘手 - 回?fù)簦兄Z,異步/等待和事件循環(huán)使得很難跟蹤執(zhí)行流程。 Chrome DevTools提供了強(qiáng)大的功能,可幫助您有效調(diào)試異步代碼。這是使用它們的方法。

在Chrome DevTools中調(diào)試異步代碼

1。使用呼叫堆棧和異步堆棧跟蹤

當(dāng)調(diào)試異步功能時(shí),常規(guī)調(diào)用堆棧僅顯示當(dāng)前同步上下文,該上下文通常會(huì)在事件環(huán)邊界上斷裂(例如,在Promise.then()之后)。這使得很難知道異步操作的起源在哪里

啟用異步堆棧跟蹤:

在Chrome DevTools中調(diào)試異步代碼
  • 打開Chrome Devtools。
  • 轉(zhuǎn)到設(shè)置(齒輪圖標(biāo))→首選項(xiàng)來(lái)源。
  • 檢查“異步堆棧跟蹤”

啟用后,Chrome將保留在setTimeout , Promise.thenawait的異步操作中的呼叫堆棧。您會(huì)看到更完整的圖片,說(shuō)明您的代碼如何到達(dá)斷點(diǎn)。

例子:
如果您的fetchData()fetch().then(handleResult)handleResult() ,則啟用了異步堆棧,請(qǐng)單擊handleResult將顯示完整的鏈,而不僅僅是.then()呼叫。

在Chrome DevTools中調(diào)試異步代碼

2。在承諾和異步功能中設(shè)置斷點(diǎn)

您可以像同步代碼一樣調(diào)試異步代碼 - 直接設(shè)置斷點(diǎn):

  • async功能體
  • .then().catch()回調(diào)
  • 內(nèi)部代碼await表達(dá)式

尖端:

  • 通過單擊“源”選項(xiàng)卡中的“行號(hào)”來(lái)使用“線路”斷點(diǎn)
  • 當(dāng)執(zhí)行在async函數(shù)中登錄斷點(diǎn)時(shí), await關(guān)鍵字將在承諾完成后顯示解決值。
  • 懸停在變量上檢查其當(dāng)前狀態(tài),甚至承諾顯示其狀態(tài)( pendingfulfilled , rejected )和價(jià)值。

3。使用“暫停異常”功能

無(wú)人駕駛的承諾拒絕或異步回調(diào)中的錯(cuò)誤可能很難捕獲,因?yàn)樗鼈儾⒉豢偸怯|發(fā)立即停止。

啟用智能例外暫停:

  • 在“ DevTools”選項(xiàng)卡中,單擊異常按鈕上的暫停(?)。
  • 如果需要,請(qǐng)檢查“暫停例外” 。
  • Chrome現(xiàn)在將停止在未經(jīng)方便的承諾拒絕中(使用--unhandled-rejections=strict標(biāo)志或現(xiàn)代版本)。

這有助于您在.then()回調(diào)或await可能會(huì)默默失敗的表達(dá)式中捕獲錯(cuò)誤。


4。使用Console.Trace()快速調(diào)試

如果您不使用斷點(diǎn),請(qǐng)?jiān)诋惒交卣{(diào)中sherpinkle console.trace()將當(dāng)前的異步調(diào)用堆棧記錄到控制臺(tái)。

異步函數(shù)step1(){
  step2();
}

異步函數(shù)step2(){
  等待Promise.resolve();
  console.trace(“我們從哪里到這里?”);
}

這將輸出一個(gè)跡線,顯示異步路徑(即使跨微型掩體)在您不能或不想暫停執(zhí)行時(shí)會(huì)助長(zhǎng)。


5。在事件循環(huán)中了解任務(wù)與Microtask

Chrome DevTools在視覺上沒有區(qū)分任務(wù)(例如setTimeout )和Microtasks(例如, Promise.then ),但是了解這有助于解釋執(zhí)行順序。

  • 任務(wù):UI事件, setTimeout , setInterval
  • Microtasks MutationObserver Promise.then queueMicrotask

MicroTasks在下一個(gè)任務(wù)之前運(yùn)行,這可能會(huì)導(dǎo)致意外的延遲或混淆在調(diào)試計(jì)時(shí)。

提示:使用performance.now()console.time()在調(diào)試比賽條件時(shí)測(cè)量實(shí)際時(shí)間。


獎(jiǎng)勵(lì):使用活動(dòng)聽眾斷點(diǎn)

有時(shí),異步代碼是由DOM事件或網(wǎng)絡(luò)響應(yīng)觸發(fā)的。

“來(lái)源”選項(xiàng)卡中:

  • 擴(kuò)展事件偵聽器斷點(diǎn)(右圖)。
  • click , fetchtimeout等事件啟用斷點(diǎn)。

這使您可以在安排異步操作時(shí)正確暫停,從而幫助追溯到用戶操作或API調(diào)用。


在Chrome DevTools中調(diào)試異步代碼并不一定要痛苦。通過啟用異步堆棧跟蹤,智能斷點(diǎn)和適當(dāng)?shù)漠惓L幚恚梢韵裢揭粯痈S流程。關(guān)鍵是知道在哪里看,并打開正確的設(shè)置。

基本上,啟用異步堆棧,暫停異常,并在需要時(shí)使用console.trace() 。涵蓋了大多數(shù)實(shí)際的調(diào)試場(chǎng)景。

以上是在Chrome DevTools中調(diào)試異步代碼的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

C++ 函數(shù)調(diào)試詳解:如何調(diào)試多線程函數(shù)中的問題? C++ 函數(shù)調(diào)試詳解:如何調(diào)試多線程函數(shù)中的問題? May 02, 2024 pm 04:15 PM

C++多線程調(diào)試可使用GDB:1.啟用調(diào)試信息編譯;2.設(shè)置斷點(diǎn);3.使用infothreads查看線程;4.用thread切換線程;5.使用next、stepi、locals調(diào)試。實(shí)戰(zhàn)案例調(diào)試死鎖:1.使用threadapplyallbt打印堆棧;2.檢查線程狀態(tài);3.單步執(zhí)行主線程;4.使用條件變量協(xié)調(diào)訪問來(lái)解決死鎖。

如何使用LeakSanitizer調(diào)試C++內(nèi)存泄漏? 如何使用LeakSanitizer調(diào)試C++內(nèi)存泄漏? Jun 02, 2024 pm 09:46 PM

如何使用LeakSanitizer調(diào)試C++內(nèi)存泄漏?安裝LeakSanitizer。通過編譯標(biāo)志啟用LeakSanitizer。運(yùn)行應(yīng)用程序并分析LeakSanitizer報(bào)告。識(shí)別內(nèi)存分配類型和分配位置。修復(fù)內(nèi)存泄漏,確保釋放所有動(dòng)態(tài)分配的內(nèi)存。

Java 并發(fā)編程中如何進(jìn)行并發(fā)測(cè)試和調(diào)試? Java 并發(fā)編程中如何進(jìn)行并發(fā)測(cè)試和調(diào)試? May 09, 2024 am 09:33 AM

并發(fā)測(cè)試和調(diào)試Java并發(fā)編程中的并發(fā)測(cè)試和調(diào)試至關(guān)重要,以下技術(shù)可供使用:并發(fā)測(cè)試:?jiǎn)卧獪y(cè)試:隔離并測(cè)試單個(gè)并發(fā)任務(wù)。集成測(cè)試:測(cè)試多個(gè)并發(fā)任務(wù)之間的交互。負(fù)載測(cè)試:評(píng)估應(yīng)用程序在高負(fù)載下的性能和可擴(kuò)展性。并發(fā)調(diào)試:斷點(diǎn):暫停線程執(zhí)行并檢查變量或執(zhí)行代碼。日志記錄:記錄線程事件和狀態(tài)。堆棧跟蹤:識(shí)別異常源頭。可視化工具:監(jiān)視線程活動(dòng)和資源使用情況。

golang 函數(shù)調(diào)試和分析的捷徑 golang 函數(shù)調(diào)試和分析的捷徑 May 06, 2024 pm 10:42 PM

本文介紹了Go函數(shù)調(diào)試和分析的捷徑,包括:內(nèi)置調(diào)試器dlv,用于暫停執(zhí)行、檢查變量、設(shè)置斷點(diǎn)。日志記錄,使用log包記錄消息,在調(diào)試時(shí)查看。性能分析工具pprof,生成調(diào)用圖并分析性能,使用gotoolpprof分析數(shù)據(jù)。實(shí)戰(zhàn)案例:通過pprof分析內(nèi)存泄漏,生成調(diào)用圖顯示導(dǎo)致泄漏的函數(shù)。

如何調(diào)試 PHP 異步代碼 如何調(diào)試 PHP 異步代碼 May 31, 2024 am 09:08 AM

調(diào)試PHP異步代碼的工具包括:Psalm:靜態(tài)分析工具,可發(fā)現(xiàn)潛在錯(cuò)誤。ParallelLint:檢查異步代碼并提供建議的工具。Xdebug:用于調(diào)試PHP應(yīng)用程序的擴(kuò)展,可通過啟用會(huì)話并逐步執(zhí)行代碼來(lái)調(diào)試。其他技巧還包括使用日志記錄、斷言、局部運(yùn)行代碼和編寫單元測(cè)試。

Java函數(shù)中遞歸調(diào)用的調(diào)試技巧有哪些? Java函數(shù)中遞歸調(diào)用的調(diào)試技巧有哪些? May 05, 2024 am 10:48 AM

以下技術(shù)可用于調(diào)試遞歸函數(shù):檢查堆棧跟蹤設(shè)置調(diào)試點(diǎn)檢查基本情況是否正確實(shí)現(xiàn)計(jì)算遞歸調(diào)用的次數(shù)可視化遞歸堆棧

PHP 調(diào)試錯(cuò)誤:常見錯(cuò)誤的指南 PHP 調(diào)試錯(cuò)誤:常見錯(cuò)誤的指南 Jun 05, 2024 pm 03:18 PM

常見的PHP調(diào)試錯(cuò)誤包括:語(yǔ)法錯(cuò)誤:檢查代碼語(yǔ)法,確保沒有錯(cuò)誤。未定義變量:在使用變量之前,確保已將其初始化并賦值。缺失分號(hào):為所有代碼塊添加分號(hào)。函數(shù)未定義:檢查函數(shù)名拼寫是否正確,并確保已加載正確的文件或PHP擴(kuò)展。

C++ 函數(shù)調(diào)試詳解:如何調(diào)試包含異常處理的函數(shù)中的問題? C++ 函數(shù)調(diào)試詳解:如何調(diào)試包含異常處理的函數(shù)中的問題? Apr 30, 2024 pm 01:36 PM

C++調(diào)試包含異常處理的函數(shù)使用異常點(diǎn)斷點(diǎn)識(shí)別異常位置。使用gdb中的catch命令打印異常信息和堆棧跟蹤。使用異常記錄器捕獲并分析異常,包括消息、堆棧跟蹤和變量值。

See all articles