Gelung peristiwa ialah mekanisme penting dalam Node.js yang mengurus panggilan balik tak segerak, membolehkan platform melakukan operasi I/O tanpa sekatan. Berikut ialah pecahan terperinci 6 perkara penting bagi gelung acara beroperasi.
- Timbunan Panggilan
- Pendaftaran Panggilan Balik
- Baris Gilir Panggilan Balik
- Pemantauan Berterusan
- Penyelesaian Operasi Asynchronous
- Aliran Pelaksanaan
1. Tindanan Panggilan: Memahami Tindanan Panggilan dalam JavaScript:
- Timbunan panggilan ialah tempat kod JavaScript dilaksanakan. Apabila fungsi dipanggil, ia ditolak ke timbunan panggilan. Setelah pelaksanaan fungsi selesai, ia muncul dari timbunan.
- Jika tindanan panggilan sibuk melaksanakan fungsi, gelung acara menunggu sehingga tindanan kosong sebelum menyemak baris gilir panggilan balik.
2. Pendaftaran Panggilan Balik: Cara Operasi Asynchronous Dikendalikan:
- API Web dan API Node.js: Apabila operasi tak segerak (seperti bacaan fail, permintaan rangkaian atau pemasa) dimulakan, panggilan balik yang sepadan didaftarkan dengan API Web (dalam penyemak imbas) atau API Node.js (dalam pelayan).
- Contoh:
- Untuk setTimeout(), apabila pemasa tamat tempoh, panggilan balik
fungsi didaftarkan dengan gelung acara yang akan dilaksanakan
dalam baris gilir tugasan makro.
- Untuk permintaan rangkaian yang dibuat melalui http.get(), apabila data
diterima, panggilan balik diletakkan dalam baris gilir untuk
pemprosesan.
3. Barisan Panggil Balik: Macrotask lwn. Microtask:
Node.js mengekalkan dua jenis utama baris gilir panggil balik
- Baris Gilir Tugasan (Macrotask Queue): Baris gilir ini mengendalikan panggilan balik daripada operasi seperti setTimeout, setInterval, operasi I/O dan tugasan lain yang mengambil masa. Tugasan dalam baris gilir ini dilaksanakan hanya selepas semua tugasan mikro diproses dan timbunan panggilan kosong.
- Microtask Queue: Barisan gilir ini termasuk panggilan balik daripada Promises dan process.nextTick(). Tugasan mikro mempunyai keutamaan yang lebih tinggi dan dilaksanakan serta-merta selepas timbunan panggilan kosong, sebelum memproses sebarang tugasan makro.
4. Pemantauan Berterusan oleh Gelung Acara:
- Gelung peristiwa secara berterusan menyemak tindanan panggilan dan baris gilir panggil balik untuk menentukan sama ada terdapat sebarang tugasan yang perlu dilaksanakan. Ini membolehkan Node.js mengendalikan berbilang operasi tak segerak secara serentak tanpa menyekat urutan utama.
5. Penyelesaian Operasi Asynchronous:
Setelah operasi tak segerak selesai, fungsi panggil balik yang sepadan ditambah pada baris gilir yang sesuai:
- Jika pemasa yang ditetapkan oleh setTimeout() tamat tempoh, panggilan balik yang berkaitan didaftarkan dalam baris gilir tugasan makro, menunggu untuk dilaksanakan selepas tindanan semasa dan sebarang tugasan mikro diproses.
6. Aliran Pelaksanaan: Memindahkan Tugasan Kembali ke Timbunan Panggilan:
- Apabila tindanan panggilan kosong, gelung peristiwa mula-mula memproses semua tugasan dalam baris gilir microtask. Ini memastikan bahawa resolusi janji dan tugasan mikro lain dikendalikan secepat mungkin.
- Selepas semua tugasan mikro selesai, gelung acara akan beralih ke baris gilir tugasan makro dan melaksanakan satu tugas pada satu masa. Pelaksanaan tugasan ini diteruskan sehingga timbunan kosong semula, pada ketika itu gelung menyemak baris gilir sekali lagi.
- Sebaik sahaja tugasan dilaksanakan, ia dikeluarkan daripada timbunan panggilan
Contoh Pelaksanaan Gelung Acara:
console.log('Start');
setTimeout(() => {
console.log('Timeout');
}, 0);
Promise.resolve().then(() => {
console.log('Promise');
});
console.log('End');
Salin selepas log masuk
Output:
Start
End
Promise
Timeout
Salin selepas log masuk
Dalam contoh ini:
- Log segerak ('Mula' dan 'Tamat') dilaksanakan dahulu, menambahkannya pada tindanan panggilan.
- Panggil balik setTimeout didaftarkan dalam baris gilir macrotask.
- Janji diselesaikan, menambahkan panggilan baliknya pada baris gilir microtask.
- Selepas timbunan panggilan dikosongkan, gelung acara memproses baris gilir tugasan mikro ('Janji') sebelum beralih ke baris gilir tugasan makro ('Tamat masa').
Gelung peristiwa ialah ciri teras Node.js yang membolehkan pengurusan operasi tak segerak yang cekap. Dengan memantau timbunan panggilan dan baris gilir panggil balik secara berterusan, ia memastikan tugasan diproses dalam cara yang tidak menyekat. Pendaftaran panggil balik dalam API Web dan API Node.js adalah kunci untuk mengekalkan responsif dalam aplikasi, membolehkan Node.js mengendalikan banyak operasi serentak dengan cekap.
Atas ialah kandungan terperinci Tag Gelung Peristiwa Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!