Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang peraturan gelung acara Javascript

Penjelasan terperinci tentang peraturan gelung acara Javascript

DDD
DDDasal
2024-11-07 22:44:03610semak imbas

Detailed explanation of Javascript event loop rules

Seperti yang diketahui, Javacript ialah bahasa utas tunggal, tetapi mengapa kita boleh menggunakan operasi tak segerak? Kerana operasi tak segerak dilaksanakan oleh penyemak imbas dengan keupayaan berbilang benang dan berbilang proses. Javascript sentiasa berjalan pada satu utas sepanjang dan diserahkan kepada penyemak imbas untuk dilaksanakan apabila kod tak segerak ditemui, penyemak imbas kemudian memanggil utas atau proses yang sepadan, termasuk permintaan http, GUI, pencetusan peristiwa, dll., untuk mengendalikan operasi async ini .

Secara umumnya, tugas Javasctip boleh dibahagikan kepada tiga kategori: tugas penyegerakan, tugas mikro dan tugasan makro, berjalan dalam susunan penyegerakan -> mikro -> makro. Kod penyegerakan dilaksanakan dahulu kemudian penyemak imbas akan meletakkan kod mikro ke dalam baris gilir tugas mikro menunggu tugasan penyegerakan selesai, dan meletakkan kod makro ke dalam baris gilir tugas makro menunggu kod mikro selesai.
Tertib keutamaan ini serupa dengan algoritma penjadualan baris gilir maklum balas peringkat mutil pada OS.

tugas mikro biasa: Promise.then(), Promise.catch(), new MutationObserver(), process.nextTick()
tugas makro biasa: setTimeout, setInterview, requestAnimationFrame()

Sebenarnya, process.nextTick() bukanlah tugas mikro atau tugas makro dan ia hanya berjalan selepas kod penyegerakan dan sebelum tugas mikro.

Atas ialah kandungan terperinci Penjelasan terperinci tentang peraturan gelung acara Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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