gelung peristiwa dalam nod js

Gelung Peristiwa Dalam Nod Js



Node.js ialah rangka kerja Javascript yang berkuasa yang membolehkan pengguna menjalankan kod Javascript pada pelayan di luar penyemak imbas. Ia ialah persekitaran masa jalan yang tidak menyekat dan didorong oleh peristiwa untuk membina aplikasi web boleh skala yang boleh dipercayai. Gelung acara ialah bahagian penting Node.js yang membolehkan anda melakukan tugasan tanpa menunggu satu selesai sebelum memulakan tugasan yang lain.

Walaupun Javascript ialah bahasa berbenang tunggal, Node.js boleh menetapkan tugasan kepada sistem pengendalian, membenarkannya memproses berbilang tugas pada masa yang sama. Beberapa tugas perlu diselesaikan pada masa yang sama kerana operasi dalam sistem pengendalian adalah berbilang benang. Panggilan balik yang dikaitkan dengan setiap operasi ditambahkan pada baris gilir acara dan dijadualkan oleh Node.js untuk dijalankan apabila tugas yang ditentukan selesai.

Untuk menulis kod Node.js yang cekap dan boleh dipercayai, pengguna mesti mempunyai pemahaman yang kukuh tentang gelung peristiwa. Ia juga boleh membantu dalam menyelesaikan masalah prestasi dengan berkesan. Gelung peristiwa dalam Node.js menjimatkan memori dan membolehkan anda melakukan berbilang perkara serentak tanpa perlu menunggu setiap satu selesai. Istilah 'tak segerak' merujuk kepada mana-mana fungsi Javascript yang berjalan di latar belakang tanpa menyekat permintaan masuk.







Sebelum melompat terus ke gelung acara, mari kita lihat aspek yang berbeza dalam bahasa pengaturcaraan Javascript.



Javascript sebagai bahasa pengaturcaraan tak segerak

Mari kita lihat konsep pengaturcaraan tak segerak. Javascript digunakan dalam aplikasi web, mudah alih dan desktop, tetapi perlu diingat bahawa Javascript ialah bahasa pengaturcaraan komputer berbenang tunggal dan segerak.



Contoh kod mudah diberikan untuk memahami konsep.





kaedah fungsi1 ( ) {

konsol. log ( 'Fungsi 1' )

}

kaedah fungsi2 ( ) {

konsol. log ( 'Fungsi 2' )

}

kaedah1 ( )

kaedah2 ( )

Dalam kod ini, dua fungsi mudah dicipta dan kaedah1 dipanggil dahulu supaya ia akan log method1 dahulu dan kemudian beralih ke seterusnya.

Pengeluaran



Javascript sebagai bahasa pengaturcaraan segerak

Javascript ialah bahasa pengaturcaraan segerak dan melaksanakan setiap baris langkah demi langkah bergerak dari atas ke bawah dengan hanya satu baris dilaksanakan pada satu masa. Dalam contoh kod yang diberikan di atas method1 dilog pertama dalam terminal dan kemudian kaedah2.

Javascript sebagai Bahasa Penyekat

Menjadi javascript bahasa segerak mempunyai fungsi menyekat. Tidak kira berapa lama masa yang diambil untuk menyelesaikan proses yang sedang berjalan tetapi proses baharu tidak akan dimulakan sehingga yang sebelumnya telah selesai. Dalam contoh kod di atas katakan terdapat banyak skrip kod dalam method1 tidak kira berapa lama masa yang diambil sama ada 10 saat atau seminit method2 tidak akan dilaksanakan sehingga semua kod dalam method1 telah dilaksanakan.

Pengguna mungkin pernah mengalami perkara ini semasa menyemak imbas. Apabila aplikasi web dilaksanakan dalam penyemak imbas di bahagian belakang, sebahagian besar kod sedang dilaksanakan supaya penyemak imbas kelihatan dibekukan untuk beberapa lama sebelum mengembalikan akses kawalan kepada pengguna. Tingkah laku ini dikenali sebagai menyekat. Penyemak imbas tidak boleh melayan sebarang permintaan masuk selanjutnya sehingga permintaan semasa telah diproses.

Javascript ialah Bahasa satu benang

Untuk menjalankan program dalam javascript, fungsi thread digunakan. Benang hanya mampu melaksanakan satu tugas pada satu masa. Bahasa pengaturcaraan lain menyokong multi-threading dan boleh menjalankan berbilang tugas secara selari, javascript mengandungi hanya satu thread untuk melaksanakan sebarang skrip kod.

Menunggu dalam Javascript

Seperti yang terbukti dari nama dalam bahagian ini, kami perlu menunggu permintaan kami diproses untuk meneruskan lebih lanjut. Penantian boleh mengambil masa beberapa minit dan tiada permintaan selanjutnya dilayan. Jika skrip kod diteruskan tanpa menunggu maka kod akan menghadapi ralat. Sesetengah fungsi akan dilaksanakan dalam Javascript atau lebih khusus Node.js untuk menjadikan kod itu tidak segerak.

Memandangkan kita telah memahami pelbagai aspek Javascript, marilah kita memahami segerak dan tak segerak melalui beberapa contoh mudah.

Pelaksanaan kod segerak dalam Javascript

Segerak bermaksud bahawa kod dilaksanakan secara berurutan atau lebih mudah langkah demi langkah bermula dari atas dan bergerak ke bawah baris demi baris.

Di bawah contoh diberikan yang boleh membantu memahami:

// application.js

konsol. log ( 'Satu' )

konsol. log ( 'Dua' )

konsol. log ( 'tiga' )

Dalam kod ini, terdapat tiga pernyataan console.log setiap satu mencetak sesuatu. Mula-mula pernyataan pertama yang akan mencetak 'Satu' dalam konsol dihantar ke timbunan panggilan selama 1 ms (anggaran) kemudian ia dilog ke terminal. Selepas itu, pernyataan kedua ditolak ke dalam timbunan panggilan dan kini masa adalah 2 ms dengan satu ditambah dari sebelumnya dan kemudian ia log 'Dua' ke konsol. Akhir sekali, pernyataan terakhir ditolak ke dalam timbunan panggilan buat masa ini ialah 3ms dan ia log 'Tiga' dalam konsol.

Kod di atas boleh dilaksanakan dengan menggunakan arahan berikut:

aplikasi nod. js

Pengeluaran

Fungsi diterangkan di atas secara terperinci dan dengan mempertimbangkannya, output dilog masuk ke konsol dalam sekelip mata:

Pelaksanaan kod tak segerak dalam Javascript

Sekarang mari kita memfaktorkan semula kod yang sama dengan memperkenalkan panggilan balik dan menjadikan kod itu tidak segerak. Kod di atas boleh difaktorkan semula sebagai:

// application.js
fungsi printOne ( panggil balik ) {
setTimeout ( fungsi ( ) {
konsol. log ( 'Satu' ) ;
panggil balik ( ) ;
} , 1000 ) ;
}
fungsi cetakDua ( panggil balik ) {
setTimeout ( fungsi ( ) {
konsol. log ( 'Dua' ) ;
panggil balik ( ) ;
} , 2000 ) ;
}
fungsi cetakanTiga ( ) {
setTimeout ( fungsi ( ) {
konsol. log ( 'tiga' ) ;
} , 3000 ) ;
}
konsol. log ( 'Permulaan program' ) ;
printOne ( fungsi ( ) {
cetakDua ( fungsi ( ) {
cetakTiga ( ) ;
} ) ;
} ) ;
konsol. log ( 'Tamat program' ) ;

Dalam kod ini di atas:

  • Tiga fungsi diisytiharkan untuk mencetak 'Satu', 'Dua' dan 'Tiga', setiap fungsi mempunyai parameter panggil balik yang membenarkan pelaksanaan kod secara berurutan.
  • Tamat masa ditetapkan menggunakan fungsi setTimeout dan terdapat pernyataan console.log untuk mencetak selepas kelewatan tertentu.
  • Dua mesej dicetak 'Mula Program' dan 'Tamat Program' yang menunjukkan permulaan dan akhir program.
  • Program ini bermula dengan mencetak “Start of the Program” selepas itu fungsi printOne dilaksanakan dengan kelewatan 1 saat, kemudian fungsi printTwo dilaksanakan dengan kelewatan 2 saat, dan akhirnya fungsi printThree dilaksanakan dengan 3 saat kelewatan.
  • Program ini tidak menunggu pelaksanaan kod tak segerak di dalam fungsi setTimeouts yang merekodkan pernyataan 'Tamat Program' sebelum mencetak Satu, Dua dan Tiga.

Pengeluaran

Jalankan kod di atas dengan melaksanakan arahan ini di terminal:

aplikasi nod. js

Sekarang output dalam terminal akan muncul secara tidak segerak sebagai:

Sekarang setelah kita mempunyai pemahaman yang lengkap tentang pelaksanaan segerak dan tak segerak mari kita melompat untuk mengukuhkan konsep gelung peristiwa kita dalam Node.js.

Node.js: Mekanisme Gelung Peristiwa

Perlaksanaan kedua-dua tugas segerak dan tak segerak diuruskan oleh gelung peristiwa dalam Node.js. Perlaksanaan ini digunakan sebaik sahaja projek Node.js dilancarkan dan memindahkan tugas yang kompleks ke sistem dengan lancar. Ini memastikan bahawa tugasan lain dapat berjalan dengan lancar pada utas utama.

Penjelasan Visual Gelung Peristiwa dalam Node.js

Gelung peristiwa adalah berterusan dan separa tak terhingga dalam Node.js. Gelung acara digunakan oleh permulaan skrip kod Node.js dan ia bertanggungjawab untuk membuat panggilan API async dan proses panggilan. Tick(), dan pemasa penjadualan kemudian menyambung semula pelaksanaan gelung acara.

Dalam Node.js, lima jenis baris gilir utama mengendalikan panggilan balik:

  • 'Baris Gilir Pemasa' yang biasanya dikenali sebagai timbunan min bertanggungjawab untuk mengendalikan panggilan balik yang dikaitkan dengan 'setTimeout' dan 'setInterval'.
  • Panggilan balik untuk operasi tak segerak seperti dalam modul 'fs' dan 'http' dikendalikan oleh 'Baris Gilir I/O'.
  • 'Check Queue' mengandungi panggilan balik untuk fungsi 'setImmediate' yang unik untuk Node.
  • 'Tutup Baris Gilir' mengurus panggilan balik yang dikaitkan dengan sebarang acara penutup tugas tak segerak.
  • Akhir sekali, terdapat dua baris gilir berbeza dalam baris gilir 'Tugas Mikro':
    • Baris gilir 'nextTick' mengandungi panggilan balik yang dikaitkan dengan fungsi 'process.nextTick'.
    • Baris gilir 'Janji' mengawal panggilan balik yang berkaitan dengan Janji asli.

Fungsi Gelung Acara dalam Node.js

Gelung peristiwa berfungsi di bawah keperluan khusus yang mengawal perintah pelaksanaan panggilan balik. Kod Javascript segerak pengguna diberi keutamaan pada permulaan proses, jadi gelung peristiwa hanya bermula apabila tindanan panggilan dikosongkan. Urutan pelaksanaan berikut mengikut corak berstruktur:

Keutamaan tertinggi diberikan kepada panggilan balik dalam baris gilir microtask kemudian bergerak untuk melaksanakan tugas dalam baris gilir nextTick diikuti dengan tugas dalam baris gilir Janji. Proses dalam panggilan balik baris gilir pemasa kemudiannya dikendalikan selepas itu baris gilir microtask dilawati semula selepas setiap panggilan balik pemasa. Panggilan balik dalam baris gilir I/O, semak dan tutup kemudiannya dilaksanakan dalam corak yang sama dengan baris gilir microtask yang dilawati selepas setiap fasa.

Gelung terus dilaksanakan jika terdapat lebih banyak panggilan balik untuk diproses. Apabila skrip kod telah tamat atau tiada panggilan balik dibiarkan untuk diproses, gelung acara tamat dengan cekap.

Sekarang setelah kita memahami dengan mendalam gelung Acara, mari kita lihat ciri-cirinya.

Ciri gelung peristiwa dalam Node.js

Ciri-ciri utama ialah:

  • Gelung peristiwa ialah gelung tak terhingga dan terus melaksanakan tugas sebaik sahaja ia menerimanya dan masuk ke mod tidur sekiranya tiada tugas tetapi mula berfungsi sebaik sahaja tugasan diterima.
  • Tugas dalam baris gilir acara dilaksanakan hanya apabila timbunan kosong bermakna tiada operasi aktif.
  • Panggilan balik dan janji boleh digunakan dalam gelung acara.
  • Oleh kerana gelung peristiwa mengikut prinsip baris gilir jenis data Abstrak ia memenuhi tugas pertama kemudian meneruskan ke seterusnya.

Selepas pemahaman menyeluruh tentang gelung peristiwa, dan logik pelaksanaan tak segerak dan segerak, mendapatkan pemahaman tentang fasa yang berbeza boleh mengukuhkan konsep gelung peristiwa.

Fasa gelung peristiwa Node.js

Seperti yang dinyatakan di atas, gelung acara adalah separa tak terhingga. Ia mempunyai banyak fasa tetapi beberapa fasa digunakan untuk pengendalian dalaman. Fasa ini tidak mempunyai sebarang kesan pada skrip kod.

Gelung peristiwa mengikuti kefungsian Baris Gilir dan melaksanakan tugas berdasarkan prinsip masuk dahulu dan keluar dahulu. Pemasa yang dijadualkan akan dikendalikan oleh sistem pengendalian sehingga tamat tempoh. Pemasa yang telah tamat tempoh kemudiannya ditambahkan pada baris gilir panggil balik untuk pemasa.

Gelung peristiwa melaksanakan tugasan dalam baris gilir pemasa satu demi satu sehingga tiada lagi tugasan yang tinggal atau ia mencapai bilangan tugasan maksimum yang dibenarkan. Dalam bahagian di bawah fasa teras gelung peristiwa dijelaskan.

Fasa Pemasa

Dalam Node.js terdapat API pemasa yang boleh menjadualkan fungsi yang akan dilaksanakan pada masa hadapan. Selepas masa yang diperuntukkan telah berlalu, panggilan balik pemasa akan dilaksanakan sebaik sahaja ia boleh dijadualkan; walau bagaimanapun, kelewatan mungkin dihadapi sama ada dari penghujung sistem pengendalian atau disebabkan oleh pelaksanaan panggilan balik lain.

API pemasa mempunyai tiga fungsi utama:

  • setTimeout
  • setSegera
  • setInterval

Fungsi yang disebutkan di atas adalah segerak. Fasa pemasa dalam gelung acara mempunyai skopnya terhad kepada fungsi setTimeout dan setInterval. Manakala fungsi semak mengendalikan fungsi setImmediate.

Mari kita pertimbangkan contoh mudah untuk mengukuhkan bahagian teori:

// application.js

fungsi tertundaFungsi ( ) {

konsol. log ( 'fungsi tertunda dilaksanakan selepas tamat masa' ) ;

}

konsol. log ( 'Permulaan program' ) ;

setTimeout ( tertundaFungsi, 2000 ) ;

konsol. log ( 'Tamat program' ) ;

Dalam kod ini:

  • Program ini bermula dengan melog pernyataan 'Mula Program' ke terminal.
  • Kemudian delayedFunction dipanggil dengan pemasa 2ms, skrip kod tidak berhenti dan terus mengendalikan kelewatan di latar belakang.
  • Pernyataan “Tamat Program dilog selepas penyataan pertama.
  • Selepas kelewatan 2ms, pernyataan dalam delayedFunction dilog masuk ke terminal.

Pengeluaran

Output akan dipaparkan sebagai:

Ia boleh dilihat bahawa kod tidak dihentikan untuk diproses oleh delayedFunction; ia bergerak ke hadapan dan selepas kelewatan, panggilan balik fungsi diproses.

Panggilan Balik Menunggu

Gelung acara menyemak peristiwa yang berlaku, seperti membaca fail, aktiviti rangkaian atau tugas input/output, dalam fasa pengundian. Adalah penting untuk mengetahui bahawa, dalam Node.js, hanya beberapa acara dikendalikan dalam fasa pengundian ini. Walau bagaimanapun, dalam lelaran gelung peristiwa yang berikutnya, peristiwa tertentu mungkin ditunda ke fasa belum selesai. Ini ialah konsep utama yang perlu diingat semasa mengoptimumkan dan menyelesaikan masalah kod Node.js yang melibatkan operasi dipacu peristiwa yang kompleks.

Adalah penting untuk memahami bahawa semasa fasa panggil balik menunggu, gelung acara menambahkan acara yang ditangguhkan pada baris gilir panggilan balik yang belum selesai dan melaksanakannya. Fasa ini juga mengendalikan beberapa ralat soket TCP yang telah dihasilkan oleh sistem, seperti peristiwa ralat ECONNREFUSED pada sistem pengendalian tertentu.

Di bawah contoh disebutkan untuk mengukuhkan konsep:

// application.js
const fs = memerlukan ( 'fs' ) ;
fungsi readFileAsync ( filePath, panggil balik ) {
fs. readFile ( './PromiseText.txt' , 'utf8' , fungsi ( silap, data ) {
jika ( silap ) {
konsol. ralat ( ` ralat membaca fail : $ { silap. mesej } ` ) ;
} lain {
konsol. log ( ` Fail kandungan : $ { data } ` ) ;
}
panggil balik ( ) ;
} ) ;
}
konsol. log ( 'Permulaan program' ) ;
readFileAsync ( './PromiseText.txt' , fungsi ( ) {
konsol. log ( 'Panggil balik baca fail dilaksanakan' ) ;
} ) ;
konsol. log ( 'Tamat program' ) ;

Dalam kod ini:

  • Program ini dimulakan dengan mengelog pernyataan 'Mula Program' dalam terminal.
  • ReadFileAsync ditakrifkan secara tak segerak untuk membaca kandungan fail 'PromiseText.txt'. Ia ialah fungsi berparameter yang melaksanakan fungsi panggil balik selepas fail dibaca.
  • Fungsi readFileAsync dipanggil untuk memulakan proses membaca fail.
  • Dalam proses membaca fail, program tidak berhenti; sebaliknya, ia meneruskan ke pernyataan seterusnya dan log masuk ke terminal 'Tamat Program'.
  • Peristiwa tak segerak bacaan fail diproses di latar belakang oleh gelung peristiwa.
  • Selepas fail telah dibaca secara tak segerak dan kandungan telah dilog ke terminal program log kandungan fail ke terminal. Selepas itu, ia log mesej berikut 'Panggil balik baca fail dilaksanakan'.
  • Gelung peristiwa mengendalikan operasi panggil balik yang belum selesai dalam fasa seterusnya.

Pengeluaran

Hasil daripada pelaksanaan di atas ialah:

Terbiar, Sediakan Fasa dalam Node.js

Fasa melahu digunakan untuk menangani fungsi dalaman dalam Node.js jadi ia bukan fasa standard. Ia tidak mempengaruhi skrip kod. Fasa terbiar adalah seperti tempoh rehat untuk gelung acara yang mengurus tugas keutamaan rendah di latar belakang. Contoh mudah untuk memahami fasa ini ialah:

const { terbiar } = memerlukan ( 'idle-gc' ) ;

terbiar. abai ( ) ;

Dalam kod ini, modul 'idle-gc' digunakan yang membenarkan untuk mengabaikan fasa terbiar. Ini berfungsi untuk mengendalikan situasi apabila gelung acara sibuk dan tugas latar belakang tidak dilakukan. Penggunaan idle.ignore tidak dianggap optimum kerana ia boleh menyebabkan masalah prestasi.

Fasa pengundian dalam Node.js

Fasa tinjauan pendapat dalam Node.js berfungsi sebagai:

  • Ia mengendalikan acara dalam baris gilir tinjauan pendapat dan melaksanakan tugas yang sepadan.
  • Ia menentukan berapa banyak masa yang perlu dihabiskan untuk menunggu dan menyemak operasi I/O dalam proses.

Apabila gelung acara memasuki fasa tinjauan pendapat kerana ketiadaan pemasa, salah satu tugas di bawah akan dilakukan:

  • Dalam fasa tinjauan pendapat bagi gelung acara dalam Node.js, acara I/O yang belum selesai dibariskan dan kemudian dilaksanakan dalam prosedur berurutan mengikut prinsip Masuk Pertama dan Keluar Pertama sehingga baris gilir menjadi kosong. Semasa pelaksanaan panggilan balik, baris gilir nextTick dan microtasks juga sedang beraksi. Ini memastikan kelancaran dan membolehkan untuk mengendalikan operasi I/O dengan lebih cekap dan boleh dipercayai.
  • Jika baris gilir kosong dan skrip tidak dijadualkan oleh fungsi setImmediate() maka gelung acara akan tamat dan ia akan meneruskan ke fasa seterusnya(semak). Sebaliknya, jika penjadualan skrip telah dilakukan oleh fungsi setImmediate() gelung acara membenarkan panggilan balik ditambah pada baris gilir yang akan dilaksanakan olehnya.

Ini paling baik digambarkan dengan contoh kod mudah:

setTimeout ( ( ) => {

konsol. log ( 'Operasi async selesai' ) ;

} , 2000 ) ;

konsol. log ( 'Mula' ) ;

setSegera ( ( ) => {

konsol. log ( 'setImmediate callback executed' ) ;

} ) ;

konsol. log ( 'Tamat' ) ;

Dalam kod ini:

  • Dua mesej 'Mula' dan 'Tamat' menunjukkan permulaan dan penamatan program.
  • Fungsi setTimeout() menetapkan fungsi panggil balik dengan kelewatan 2 ms dan log 'Operasi Async selesai' ke terminal.
  • Fungsi setImmediate() log mesej 'setImmediate callback executed' ke terminal selepas mesej Start telah dilog ke terminal.

Pengeluaran

Output akan menunjukkan mesej dengan hanya pemerhatian seminit bahawa 'operasi Async selesai' mengambil masa dan dicetak selepas mesej 'Tamat':

Fasa Semak Node.js

Selepas fasa tinjauan telah dilaksanakan, panggilan balik dalam fasa semakan kemudiannya dilaksanakan. Jika skrip kod dijadualkan menggunakan fungsi setImmediate() dan fungsi tinjauan pendapat adalah percuma, gelung acara berfungsi dengan bergerak terus ke fasa semakan dan bukannya kekal melahu. Fungsi setImmediate() ialah pemasa unik yang beroperasi semasa fasa berlainan gelung acara.

API libuv digunakan untuk merancang pelaksanaan panggilan balik selepas pelaksanaan fasa tinjauan telah selesai. Semasa pelaksanaan kod, gelung acara memasuki fasa tinjauan di mana ia menunggu permintaan sambungan masuk. Dalam kes lain jika panggilan balik dijadualkan menggunakan fungsi setImmediate() dan fasa tinjauan ditamatkan tanpa sebarang aktiviti, ia akan beralih ke fasa semakan dan bukannya menunggu. Pertimbangkan contoh di bawah untuk pemahaman:

// application.js

konsol. log ( 'Mula' ) ;

setSegera ( ( ) => {

konsol. log ( 'Panggil balik segera' ) ;

} ) ;

konsol. log ( 'Tamat' ) ;

Dalam kod ini tiga mesej dilog masuk ke terminal. Fungsi setImmediate() kemudian akhirnya menghantar panggilan balik untuk log mesej “ Panggilan balik segera ” ke terminal.

Pengeluaran

Output kod di atas akan dipaparkan dalam urutan berikut:

Node.js menutup panggilan balik

Node.js menggunakan fasa tutup ini untuk menjalankan panggilan balik untuk menutup acara dan menamatkan lelaran gelung acara. Selepas sambungan ditutup, gelung acara mengendalikan acara penutup dalam fasa ini. Dalam fasa gelung peristiwa ini, 'nextTick()' dan microtasks dijana dan diproses sama seperti fasa lain.

Fungsi process.exit digunakan untuk menamatkan gelung peristiwa pada bila-bila masa. Gelung peristiwa akan mengabaikan sebarang operasi tak segerak yang belum selesai dan proses Node.js akan ditamatkan.

Contoh mudah untuk dipertimbangkan ialah:

// application.js
const jaring = memerlukan ( 'jaring' ) ;
const pelayan = jaring. createServer ( ( soket ) => {
soket. pada ( 'tutup' , ( ) => {
konsol. log ( 'Soket ditutup' ) ;
} ) ;
soket. pada ( 'data' , ( data ) => {
konsol. log ( 'Data yang diterima:' , data. menjalin ( ) ) ;
} ) ;
} ) ;
pelayan. pada ( 'tutup' , ( ) => {
konsol. log ( 'Pelayan ditutup' ) ;
} ) ;
const pelabuhan = 3000 ;
pelayan. dengar ( pelabuhan, ( ) => {
konsol. log ( `Pelayan mendengar pada port $ { pelabuhan } ` ) ;
} ) ;
setTimeout ( ( ) => {
konsol. log ( 'Menutup pelayan selepas 10 saat' ) ;
pelayan. dekat ( ) ;
proses. keluar ( ) ;
} , 10000 ) ;

Dalam kod ini:

  • const net = memerlukan('bersih') ' mengimport modul bersih yang diperlukan untuk mengendalikan pelayan TCP dan ' pelayan const = net.createServer((soket) => { ” mencipta contoh pelayan TCP baharu.
  • socket.on(‘close’, () => {… } ” mendengar “tutup” pada semua soket. Apabila sambungan soket ditutup mesej 'Soket Tertutup' dilog ke terminal.
  • socket.on(‘data’, (data) => {} ” menyemak data masuk daripada semua soket individu dan mencetaknya menggunakan fungsi “.toString()”.
  • server.on(‘close’, () => {…} ” menyemak acara “tutup” pada pelayan itu sendiri, dan apabila sambungan pelayan ditutup ia log mesej “Pelayan Ditutup” ke terminal.
  • server.listen(port, () => {…} ” mendengar sambungan masuk pada port.
  • setTimeout(() => {…} ” menetapkan pemasa 10 ms untuk menutup pelayan.

Itu menyimpulkan perbincangan mengenai pelbagai fasa gelung acara dalam Node.js. Sebelum membuat kesimpulan mari kita bincangkan satu perkara terakhir iaitu cara keluar dari gelung peristiwa dalam Node.js.

Keluar dari Gelung Peristiwa dalam Node.js

Gelung peristiwa berada dalam fasa pelaksanaan selagi terdapat beberapa tugasan dalam semua baris gilir fasa gelung peristiwa. Gelung acara tamat selepas fasa keluar dipancarkan dan panggilan balik pendengar keluar kembali jika tiada lagi tugas dalam baris gilir.

Cara eksplisit untuk menamatkan gelung peristiwa adalah dengan menggunakan kaedah '.exit'. Proses aktif Node.js akan ditamatkan serta-merta sebaik sahaja fungsi process.exit dipanggil. Semua acara yang dijadualkan dan belum selesai akan digugurkan:

proses. pada ( 'keluar' , ( kod ) => {

konsol. log ( `Keluar dengan kod keluar : $ { kod } ` ) ;

} ) ;

proses. keluar ( 1 ) ;

Pengguna boleh mendengar fungsi .exit. Perlu diambil perhatian bahawa fungsi '.exit' mesti segerak kerana program Node.js akan keluar sebaik sahaja ia mendengar acara ini.

Ini menyimpulkan perbincangan mengenai gelung acara. Artikel mendalam yang telah merangkumi semua konsep, fasa dan contoh yang berkaitan dengan gelung acara.

Kesimpulan

Sebelum memahami gelung peristiwa, gambaran keseluruhan konsep segerak dan tak segerak boleh membantu memahami aliran kod dalam gelung peristiwa. Pelaksanaan segerak bermaksud pelaksanaan langkah demi langkah manakala pelaksanaan tak segerak bermaksud menghentikan beberapa langkah tanpa menunggu selesainya. Kerja gelung acara bersama-sama dengan semua fasa bersama-sama dengan contoh yang sesuai dibincangkan dalam artikel.