Rumah > Artikel > hujung hadapan web > Apakah perbezaan antara baris gilir microtask dan baris gilir panggil balik dalam JavaScript tak segerak?
Dalam JavaScript tak segerak, terdapat dua cara untuk menjadualkan tugas - Microtask Queue dan Callback Queue. Enjin JavaScript mengendalikan kedua-dua baris gilir ini secara berbeza.
Microtask Queue ialah baris gilir tugas yang dilaksanakan selepas tugasan semasa. Barisan gilir microtask diproses oleh enjin JavaScript sebelum beralih ke tugasan seterusnya dalam baris gilir panggil balik.
Berikut ialah contoh cara baris gilir microtask berfungsi -
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); Promise.resolve().then(function() { console.log('promise resolve'); }); console.log('end'); </script> </body> </html>
Dalam contoh di atas, panggilan balik "setTimeout" ditambahkan pada baris gilir panggil balik. "Promise.resolve" ditambahkan pada baris gilir microtask. Enjin JavaScript terlebih dahulu akan melaksanakan semua tugas dalam baris gilir microtask sebelum memasuki baris gilir panggil balik.
Jadi keluaran kod di atas ialah (dalam konsol) -
start end promise resolve setTimeout
Barisan Panggilan Balik ialah baris gilir tugasan yang dilaksanakan selepas tugasan semasa. Baris gilir panggil balikdiproses oleh enjin JavaScript selepas semua tugasan dalam baris gilir microtask telah dilaksanakan.
Berikut ialah contoh cara baris gilir panggil balik berfungsi -
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); console.log('end'); </script> </body> </html>
Dalam contoh di atas, panggilan balik ‘setTimeout’ ditambahkan pada baris gilir panggil balik. Enjin JavaScript akan melaksanakan panggilan balik "setTimeout" selepas melaksanakan semua kod dalam tugas semasa.
Jadi output kod di atas adalah (dalam konsol) -
start end setTimeout
Microtask gilir dan panggilan balikMicro
gilirialah- Yang baris gilir diproses oleh enjin JavaScript sebelum beralih ke tugas seterusnya dalam baris gilir panggil balik. Panggil balikBaris gilir diproses oleh enjin JavaScript selepas semua tugasan dalam baris gilir microtask telah dilaksanakan.
MicrotaskPemprosesan baris gilir selepas tugas semasa selesai. Panggil balikBaris gilir diproses selepas baris gilir microtask kosong.
Microtasksbarisan diproses dalam gelung acara yang berasingan. Panggil balikBaris gilir diproses dalam gelung acara yang sama.
Kesimpulan
Atas ialah kandungan terperinci Apakah perbezaan antara baris gilir microtask dan baris gilir panggil balik dalam JavaScript tak segerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!