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!