Jadual Kandungan
Bonus: Gunakan titik putus pendengar acara
Rumah hujung hadapan web tutorial js Debugging Kod Asynchronous di Chrome Devtools

Debugging Kod Asynchronous di Chrome Devtools

Jul 31, 2025 am 12:02 AM
nyahpepijat

Aktifkan jejak timbunan async dalam tetapan DevTools untuk mengekalkan timbunan panggilan merentasi operasi async seperti janji dan menunggu, membolehkan anda melihat rantaian pelaksanaan penuh. 2. Tetapkan titik putus secara langsung dalam fungsi async, .then ()/. Catch () panggil balik, dan menunggu ekspresi untuk memeriksa pembolehubah dan melihat nilai janji yang diselesaikan. 3. Gunakan "Jeda pada Pengecualian" dan membolehkan "Jeda pada Pengecualian Tertangkap" untuk menangkap penolakan janji dan kesilapan dalam kod async yang mungkin gagal dengan senyap. 4. Masukkan konsol.trace () dalam panggilan balik async untuk log stack panggilan async dan aliran pelaksanaan surih tanpa berhenti. 5. Memahami perbezaan gelung peristiwa antara tugas (contohnya, setTimeout) dan microtasks (contohnya, janji. Di samping itu, gunakan titik pemecatan pendengar acara untuk menjeda peristiwa DOM atau rangkaian yang mencetuskan kod async, membantu mengesan asal -usul operasi tak segerak. Mengaktifkan susunan async, berhenti pada pengecualian, dan menggunakan konsol.trace () dengan berkesan merangkumi kebanyakan senario debugging async dunia dalam JavaScript.

Debugging Kod Asynchronous di Chrome Devtools

Debugging Kod Asynchronous dalam JavaScript boleh menjadi rumit -callbacks, janji, async/menunggu, dan gelung acara menjadikan sukar untuk mengesan aliran pelaksanaan. Chrome Devtools menawarkan ciri -ciri yang kuat untuk membantu anda debug kod async dengan berkesan. Inilah cara menggunakannya.

Debugging Kod Asynchronous di Chrome Devtools

1. Gunakan tumpukan panggilan dan jejak timbunan async

Apabila menyahpepijat fungsi async, timbunan panggilan biasa hanya menunjukkan konteks segerak semasa, yang sering pecah di sempadan gelung peristiwa (misalnya, selepas Promise.then() ). Ini menjadikan sukar untuk mengetahui di mana operasi async berasal.

Dayakan jejak timbunan async:

Debugging Kod Asynchronous di Chrome Devtools
  • Buka Chrome Devtools.
  • Pergi ke Tetapan (Ikon Gear) → KeutamaanSumber .
  • Semak "Async Stack Traces" .

Sebaik sahaja diaktifkan, Chrome mengekalkan timbunan panggilan merentasi operasi async seperti setTimeout , Promise.then , dan await . Anda akan melihat gambaran yang lebih lengkap tentang bagaimana kod anda mendapat titik putus.

Contoh:
Jika anda mempunyai fetchData()fetch().then(handleResult)handleResult() , dengan susunan async diaktifkan, mengklik ke handleResult akan menunjukkan rantaian penuh, bukan hanya panggilan balik .then() .

Debugging Kod Asynchronous di Chrome Devtools

2. Tetapkan titik putus dalam janji dan fungsi async

Anda boleh menyahpepijat kod async seperti kod break -break Code -shink secara langsung di:

  • badan fungsi async
  • .then() dan .catch() Callbacks
  • Kod di dalam Ekspresi await

Petua:

  • Gunakan titik pemecahan line-of-code dengan mengklik nombor baris dalam tab Sumber .
  • Apabila pelaksanaan mencecah titik putus di dalam fungsi async , kata kunci await akan menunjukkan nilai yang diselesaikan sebaik sahaja janji selesai.
  • Bergegas ke atas pembolehubah untuk memeriksa keadaan semasa mereka -walaupun janji -janji menunjukkan status mereka ( pending , fulfilled , rejected ) dan nilai.

3. Gunakan ciri "Jeda pada Pengecualian"

Penolakan janji atau kesilapan yang tidak diingini dalam panggilan balik async boleh menjadi sukar untuk ditangkap kerana mereka tidak selalu mencetuskan berhenti segera.

Dayakan pengecualian pintar berhenti:

  • Dalam tab Sumber DevTools, klik butang Jeda pada Butang Pengecualian (?).
  • Semak "Jeda pada Pengecualian Tertangkap" jika diperlukan.
  • Chrome kini akan menjeda penolakan janji yang tidak diingini (dengan --unhandled-rejections=strict atau dalam versi moden).

Ini membantu anda menangkap kesilapan dalam .then() panggilan balik atau await ekspresi yang mungkin gagal dengan senyap.


4. Gunakan konsol.trace () untuk debugging cepat

Jika anda tidak menggunakan titik putus, taburkan console.trace() dalam panggilan balik async anda untuk log timbunan panggilan async semasa ke konsol.

 fungsi async langkah1 () {
  langkah2 ();
}

fungsi async step2 () {
  menunggu janji.Resolve ();
  Console.Trace ("Di manakah kita sampai di sini?");
}

Ini mengeluarkan jejak yang menunjukkan laluan async -walaupun merentasi microtasks -membantu apabila anda tidak boleh atau tidak mahu menjeda pelaksanaan.


5. Memahami tugas vs microtask dalam gelung acara

Chrome Devtools tidak membezakan secara visual antara tugas -tugas (contohnya, setTimeout ) dan microtasks (contohnya, Promise.then .

  • Tugas : Acara UI, setTimeout , setInterval
  • Microtasks MutationObserver Promise.then queueMicrotask

Microtasks dijalankan sebelum tugas seterusnya, yang boleh menyebabkan kelewatan atau kekeliruan yang tidak dijangka dalam masa debugging.

Petua: Gunakan performance.now() atau console.time() untuk mengukur masa sebenar apabila menyahpepijat keadaan perlumbaan.


Bonus: Gunakan titik putus pendengar acara

Kadang -kadang kod async dicetuskan oleh peristiwa DOM atau respons rangkaian.

Dalam tab Sumber :

  • Memperluaskan titik pemecatan pendengar (di sebelah kanan).
  • Dayakan titik putus untuk acara seperti click , fetch , atau timeout .

Ini membolehkan anda berhenti sejenak apabila operasi async dijadualkan, membantu mengesan kembali ke tindakan pengguna atau panggilan API.


Debugging kod async di Chrome Devtools tidak perlu menyakitkan. Dengan jejak stack async diaktifkan, titik putus pintar, dan pengendalian pengecualian yang betul, anda boleh mengikuti aliran seperti itu segerak. Kuncinya adalah mengetahui di mana hendak melihat -dan menghidupkan tetapan yang betul.

Pada asasnya, membolehkan susunan async, jeda pada pengecualian, dan gunakan console.trace() apabila diperlukan. Itu meliputi senario debugging dunia yang paling nyata.

Atas ialah kandungan terperinci Debugging Kod Asynchronous di Chrome Devtools. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang penyahpepijatan fungsi C++: Bagaimana untuk menyahpepijat masalah dalam fungsi berbilang benang? Penjelasan terperinci tentang penyahpepijatan fungsi C++: Bagaimana untuk menyahpepijat masalah dalam fungsi berbilang benang? May 02, 2024 pm 04:15 PM

Penyahpepijatan berbilang benang boleh menggunakan GDB: 1. Dayakan penyusunan maklumat penyahpepijatan; 2. Tetapkan titik putus; Kebuntuan penyahpepijatan kes sebenar: 1. Gunakan threadapplyalbt untuk mencetak tindanan;

Bagaimana cara menggunakan LeakSanitizer untuk menyahpepijat kebocoran memori C++? Bagaimana cara menggunakan LeakSanitizer untuk menyahpepijat kebocoran memori C++? Jun 02, 2024 pm 09:46 PM

Bagaimana cara menggunakan LeakSanitizer untuk menyahpepijat kebocoran memori C++? Pasang LeakSanitizer. Dayakan LeakSanitizer melalui bendera kompilasi. Jalankan aplikasi dan analisis laporan LeakSanitizer. Kenal pasti jenis peruntukan memori dan lokasi peruntukan. Betulkan kebocoran memori dan pastikan semua memori yang diperuntukkan secara dinamik dikeluarkan.

Bagaimana untuk menjalankan ujian konkurensi dan penyahpepijatan dalam pengaturcaraan serentak Java? Bagaimana untuk menjalankan ujian konkurensi dan penyahpepijatan dalam pengaturcaraan serentak Java? May 09, 2024 am 09:33 AM

Ujian dan penyahpepijatan serentak Ujian dan penyahpepijatan serentak dalam pengaturcaraan serentak Java adalah penting dan teknik berikut tersedia: Ujian serentak: Ujian unit: Asingkan dan uji satu tugas serentak. Ujian integrasi: menguji interaksi antara pelbagai tugas serentak. Ujian beban: Nilaikan prestasi dan kebolehskalaan aplikasi di bawah beban berat. Penyahpepijatan Konkurensi: Titik Putus: Jeda pelaksanaan utas dan periksa pembolehubah atau jalankan kod. Pengelogan: Rekod peristiwa dan status urutan. Jejak tindanan: Kenal pasti sumber pengecualian. Alat visualisasi: Pantau aktiviti benang dan penggunaan sumber.

Pintasan kepada penyahpepijatan dan analisis fungsi golang Pintasan kepada penyahpepijatan dan analisis fungsi golang May 06, 2024 pm 10:42 PM

Artikel ini memperkenalkan pintasan untuk penyahpepijatan dan analisis fungsi Go, termasuk: dlv penyahpepijat terbina dalam, yang digunakan untuk menjeda pelaksanaan, menyemak pembolehubah dan menetapkan titik putus. Log, gunakan pakej log untuk merakam mesej dan melihatnya semasa penyahpepijatan. Alat analisis prestasi pprof menjana graf panggilan dan menganalisis prestasi, serta menggunakan gotoolpprof untuk menganalisis data. Kes praktikal: Analisis kebocoran memori melalui pprof dan hasilkan graf panggilan untuk memaparkan fungsi yang menyebabkan kebocoran.

Bagaimana untuk menyahpepijat kod tak segerak PHP Bagaimana untuk menyahpepijat kod tak segerak PHP May 31, 2024 am 09:08 AM

Alat untuk menyahpepijat kod tak segerak PHP termasuk: Psalm: alat analisis statik yang menemui kemungkinan ralat. ParallelLint: Alat yang memeriksa kod tak segerak dan memberikan cadangan. Xdebug: Sambungan untuk menyahpepijat aplikasi PHP dengan mendayakan sesi dan melangkah melalui kod. Petua lain termasuk menggunakan pengelogan, penegasan, kod berjalan secara setempat dan menulis ujian unit.

Apakah teknik penyahpepijatan untuk panggilan rekursif dalam fungsi Java? Apakah teknik penyahpepijatan untuk panggilan rekursif dalam fungsi Java? May 05, 2024 am 10:48 AM

Teknik berikut tersedia untuk menyahpepijat fungsi rekursif: Semak jejak tindananTetapkan titik nyahpepijatSemak jika kes asas dilaksanakan dengan betulKira bilangan panggilan rekursifVisualkan tindanan rekursif

Ralat Penyahpepijatan PHP: Panduan untuk Kesilapan Biasa Ralat Penyahpepijatan PHP: Panduan untuk Kesilapan Biasa Jun 05, 2024 pm 03:18 PM

Ralat penyahpepijatan PHP biasa termasuk: Ralat sintaks: Semak sintaks kod untuk memastikan tiada ralat. Pembolehubah tidak ditentukan: Sebelum menggunakan pembolehubah, pastikan ia dimulakan dan diberikan nilai. Koma bertitik tiada: Tambahkan koma bertitik pada semua blok kod. Fungsi tidak ditentukan: Semak sama ada nama fungsi dieja dengan betul dan pastikan fail atau sambungan PHP yang betul dimuatkan.

Penjelasan terperinci tentang penyahpepijatan fungsi C++: Bagaimana untuk menyahpepijat masalah dalam fungsi yang mengandungi pengendalian pengecualian? Penjelasan terperinci tentang penyahpepijatan fungsi C++: Bagaimana untuk menyahpepijat masalah dalam fungsi yang mengandungi pengendalian pengecualian? Apr 30, 2024 pm 01:36 PM

Fungsi penyahpepijatan C++ yang mengandungi pengendalian pengecualian menggunakan titik putus titik pengecualian untuk mengenal pasti lokasi pengecualian. Gunakan perintah tangkapan dalam gdb untuk mencetak maklumat pengecualian dan surih tindanan. Gunakan logger pengecualian untuk menangkap dan menganalisis pengecualian, termasuk mesej, surih tindanan dan nilai pembolehubah.

See all articles