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

目錄
獎勵:使用活動聽眾斷點
首頁 web前端 js教程 在Chrome DevTools中調(diào)試異步代碼

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

Jul 31, 2025 am 12:02 AM
偵錯

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

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

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

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

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

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

啟用異步堆棧跟蹤:

在Chrome DevTools中調(diào)試異步代碼
  • 打開Chrome Devtools。
  • 轉到設置(齒輪圖標)→首選項來源。
  • 檢查“異步堆棧跟蹤” 。

啟用後,Chrome將保留在setTimeout , Promise.thenawait的異步操作中的呼叫堆棧。您會看到更完整的圖片,說明您的代碼如何到達斷點。

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

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

2。在承諾和異步功能中設置斷點

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

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

尖端:

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

3。使用“暫停異?!惫δ?/strong>

無人駕駛的承諾拒絕或異步回調(diào)中的錯誤可能很難捕獲,因為它們並不總是觸發(fā)立即停止。

啟用智能例外暫停:

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

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


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

如果您不使用斷點,請在異步回調(diào)中sherpinkle console.trace()將當前的異步調(diào)用堆棧記錄到控制臺。

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

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

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


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

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

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

MicroTasks在下一個任務之前運行,這可能會導致意外的延遲或混淆在調(diào)試計時。

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


獎勵:使用活動聽眾斷點

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

“來源”選項卡中:

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

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


在Chrome DevTools中調(diào)試異步代碼並不一定要痛苦。通過啟用異步堆棧跟蹤,智能斷點和適當?shù)漠惓L幚?,您可以像同步一樣跟隨流程。關鍵是知道在哪裡看,並打開正確的設置。

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

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

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C++ 函式偵錯詳解:如何偵錯多執(zhí)行緒函數(shù)中的問題? C++ 函式偵錯詳解:如何偵錯多執(zhí)行緒函數(shù)中的問題? May 02, 2024 pm 04:15 PM

C++多執(zhí)行緒偵錯可使用GDB:1.啟用偵錯資訊編譯;2.設定斷點;3.使用infothreads查看執(zhí)行緒;4.用thread切換執(zhí)行緒;5.使用next、stepi、locals調(diào)試。實戰(zhàn)案例調(diào)試死鎖:1.使用threadapplyallbt列印堆疊;2.檢查執(zhí)行緒狀態(tài);3.單步執(zhí)行主執(zhí)行緒;4.使用條件變數(shù)協(xié)調(diào)存取來解決死鎖。

如何使用LeakSanitizer調(diào)試C++記憶體洩漏? 如何使用LeakSanitizer調(diào)試C++記憶體洩漏? Jun 02, 2024 pm 09:46 PM

如何使用LeakSanitizer調(diào)試C++記憶體洩漏?安裝LeakSanitizer。透過編譯標誌啟用LeakSanitizer。運行應用程式並分析LeakSanitizer報告。識別記憶體分配類型和分配位置。修復記憶體洩漏,確保釋放所有動態(tài)分配的記憶體。

Java 並發(fā)程式設計如何進行並發(fā)測試與除錯? Java 並發(fā)程式設計如何進行並發(fā)測試與除錯? May 09, 2024 am 09:33 AM

並發(fā)測試和調(diào)試Java並發(fā)程式設計中的並發(fā)測試和調(diào)試至關重要,以下技術可供使用:並發(fā)測試:單元測試:隔離並測試單一並發(fā)任務。整合測試:測試多個並發(fā)任務之間的交互作用。負載測試:評估應用程式在高負載下的效能和可擴展性。並發(fā)調(diào)試:斷點:暫停線程執(zhí)行並檢查變數(shù)或執(zhí)行程式碼。日誌記錄:記錄線程事件和狀態(tài)。堆疊追蹤:識別異常源頭。視覺化工具:監(jiān)視執(zhí)行緒活動和資源使用情況。

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

本文介紹了Go函數(shù)調(diào)試和分析的捷徑,包括:內(nèi)建偵錯器dlv,用於暫停執(zhí)行、檢查變數(shù)、設定斷點。日誌記錄,使用log包記錄訊息,在調(diào)試時查看。效能分析工具pprof,產(chǎn)生呼叫圖並分析效能,使用gotoolpprof分析資料。實戰(zhàn)案例:透過pprof分析記憶體洩漏,產(chǎn)生呼叫圖顯示導致洩漏的函數(shù)。

如何調(diào)試 PHP 非同步程式碼 如何調(diào)試 PHP 非同步程式碼 May 31, 2024 am 09:08 AM

調(diào)試PHP非同步程式碼的工具包括:Psalm:靜態(tài)分析工具,可發(fā)現(xiàn)潛在錯誤。 ParallelLint:檢查非同步程式碼並提供建議的工具。 Xdebug:用於偵錯PHP應用程式的擴展,可透過啟用會話並逐步執(zhí)行程式碼來偵錯。其他技巧還包括使用日誌記錄、斷言、局部運行程式碼和編寫單元測試。

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

以下技術可用於偵錯遞歸函數(shù):檢查堆疊追蹤設定調(diào)試點檢查基本情況是否正確實現(xiàn)計算遞歸呼叫的次數(shù)可視化遞歸堆疊

PHP 偵錯錯誤:常見錯誤的指南 PHP 偵錯錯誤:常見錯誤的指南 Jun 05, 2024 pm 03:18 PM

常見的PHP偵錯錯誤包括:語法錯誤:檢查程式碼語法,確保沒有錯誤。未定義變數(shù):在使用變數(shù)之前,請確保已將其初始化並賦值。缺少分號:為所有程式碼區(qū)塊加上分號。函數(shù)未定義:檢查函數(shù)名稱拼字是否正確,並確保已載入正確的檔案或PHP擴充。

C++ 函式偵錯詳解:如何除錯包含異常處理的函式中的問題? C++ 函式偵錯詳解:如何除錯包含異常處理的函式中的問題? Apr 30, 2024 pm 01:36 PM

C++偵錯包含異常處理的函式使用異常點斷點來辨識異常位置。使用gdb中的catch命令列印異常訊息和堆疊追蹤。使用異常記錄器擷取並分析異常,包括訊息、堆疊追蹤和變數(shù)值。

See all articles