Rumah >hujung hadapan web >tutorial js >Bagaimanakah gelung acara berfungsi dalam Node.js?

Bagaimanakah gelung acara berfungsi dalam Node.js?

PHPz
PHPzasal
2024-08-17 20:31:37577semak imbas

How event loop work in Node.js?

Gelung peristiwa ialah konsep teras dalam Node.js yang membolehkannya mengendalikan operasi tak segerak dengan cekap. Berikut ialah penjelasan ringkas tentang cara ia berfungsi:

1. Sifat Berulir Tunggal

Node.js beroperasi pada satu urutan. Ini bermakna ia hanya boleh melaksanakan satu keping kod pada satu masa. Walau bagaimanapun, Node.js direka bentuk untuk mengendalikan banyak operasi serentak tanpa memerlukan berbilang urutan.

2. I/O Tidak Menyekat

Node.js menggunakan operasi I/O tidak menyekat. Apabila Node.js melaksanakan tugas seperti membaca fail, menyoal pangkalan data atau membuat permintaan rangkaian, ia tidak menunggu tugasan ini selesai sebelum beralih ke tugas seterusnya. Sebaliknya, ia terus melaksanakan kod lain semasa tugasan ini sedang diproses.

3. Mekanisme Gelung Acara

Gelung acara bertanggungjawab untuk mengurus pelaksanaan kod dan mengendalikan acara tak segerak. Ia sentiasa menyemak "baris gilir" tugas dan memutuskan tugasan yang mana untuk dilaksanakan. Berikut ialah pecahan langkah demi langkah:

  • Memulakan: Apabila aplikasi Node.js bermula, ia memulakan dan menyediakan persekitaran.
  • Fasa Pelaksanaan: Node.js melaksanakan sebarang kod awal secara serentak. Jika terdapat tugas tak segerak (seperti membaca fail atau permintaan HTTP), tugas itu diserahkan kepada API sistem.
  • Fasa Gelung Acara: Gelung peristiwa mempunyai beberapa fasa dan ia memproses tugasan dalam setiap fasa dalam susunan tertentu:
    • Fasa Pemasa: Melaksanakan panggilan balik yang dijadualkan oleh setTimeout() dan setInterval().
    • Fasa Panggilan Balik IO: Melaksanakan panggilan balik untuk operasi I/O, seperti pembacaan fail atau permintaan rangkaian.
    • Terbiar, Fasa Sediakan: Fasa dalaman digunakan untuk tugasan sistem.
    • Fasa Tinjauan: Mendapatkan semula acara I/O baharu, melaksanakan panggilan baliknya. Jika baris gilir tinjauan pendapat kosong, ia akan menyemak sama ada terdapat panggilan balik dalam baris gilir setImmediate().
    • Fasa Semak: Melaksanakan panggilan balik yang dijadualkan oleh setImmediate().
    • Tutup Fasa Panggilan Balik: Mengendalikan acara rapat, seperti yang dipancarkan oleh socket.on('close').
  • Semak semula dan Keluar: Jika gelung acara tidak mempunyai tugasan lagi untuk diproses, ia akan keluar, membenarkan atur cara ditamatkan. Jika ada tugasan yang masih belum selesai, ia akan terus dijalankan.

4. Barisan Panggilan Balik

Tugas tak segerak, setelah selesai, tolak panggilan baliknya ke baris gilir. Gelung acara memilih panggilan balik ini daripada baris gilir dan melaksanakannya mengikut tertib.

5. Giliran Microtask (Tick Seterusnya)

Selain daripada baris gilir utama, terdapat juga baris gilir microtask (atau baris gilir tanda seterusnya) di mana panggilan balik dijadualkan dengan pengendali process.nextTick() atau promises' .then() digilir. Tugasan mikro mempunyai keutamaan berbanding panggilan balik biasa, bermakna ia dilaksanakan selepas operasi semasa selesai tetapi sebelum gelung acara beralih ke fasa seterusnya.

Contoh

Berikut ialah contoh mudah untuk menggambarkan cara gelung acara berfungsi:

const fs = require('fs');

console.log('Start');

fs.readFile('file.txt', (err, data) => {
  if (err) throw err;
  console.log('File read complete');
});

console.log('End');

Output:

Start
End
File read complete

Penjelasan:

  1. console.log('Mula'); dan console.log('End'); dilaksanakan secara serentak.
  2. fs.readFile memulakan operasi membaca fail tak segerak dan terus melaksanakan baris kod seterusnya tanpa menunggu.
  3. Setelah operasi membaca fail selesai, panggilan baliknya (console.log('Fail dibaca selesai');) ditolak ke baris gilir panggil balik gelung acara.
  4. Gelung peristiwa memproses panggilan balik selepas pelaksanaan kod segerak selesai.

Gelung peristiwa membolehkan Node.js mengendalikan banyak operasi serentak dengan cekap, walaupun berbenang tunggal, dengan mewakilkan operasi kepada sistem dan mengendalikan keputusannya secara tidak segerak.

Gelung Peristiwa mengatur pelaksanaan tugas, mengutamakan Baris Gilir Tugasan Mikro untuk memastikan janji dan operasi yang berkaitan diselesaikan dengan cepat sebelum beralih kepada tugas dalam Baris Gilir Tugas Utama (Tugas Makro).

Dinamik ini membolehkan JavaScript mengendalikan gelagat tak segerak yang kompleks dalam persekitaran satu benang.

Atas ialah kandungan terperinci Bagaimanakah gelung acara berfungsi dalam Node.js?. 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