loop acara di node js

Loop Acara Di Node Js



Node.js adalah kerangka Javascript kuat yang memungkinkan pengguna menjalankan kode Javascript di server di luar browser. Ini adalah lingkungan runtime non-pemblokiran yang digerakkan oleh peristiwa untuk membangun aplikasi web skalabel yang andal. Perulangan peristiwa adalah bagian penting dari Node.js yang memungkinkan Anda melakukan tugas tanpa menunggu tugas selesai sebelum memulai tugas lain.

Meskipun Javascript adalah bahasa single-threaded, Node.js dapat menetapkan tugas ke sistem operasi, sehingga memungkinkannya memproses banyak tugas secara bersamaan. Beberapa tugas harus diselesaikan secara bersamaan karena operasi dalam sistem operasi bersifat multi-thread. Callback yang terkait dengan setiap operasi ditambahkan ke antrian peristiwa dan dijadwalkan oleh Node.js untuk dijalankan ketika tugas yang ditentukan selesai.

Untuk menulis kode Node.js yang efisien dan andal, pengguna harus memiliki pemahaman yang kuat tentang loop peristiwa. Ini juga dapat membantu memecahkan masalah kinerja secara efektif. Perulangan peristiwa di Node.js menghemat memori dan memungkinkan Anda melakukan banyak hal sekaligus tanpa harus menunggu sampai semuanya selesai. Istilah 'asinkron' mengacu pada fungsi Javascript apa pun yang berjalan di latar belakang tanpa memblokir permintaan masuk.







Sebelum melompat langsung ke event loop mari kita lihat berbagai aspek bahasa pemrograman Javascript.



Javascript sebagai bahasa pemrograman asinkron

Mari kita lihat konsep pemrograman asynchronous. Javascript digunakan dalam aplikasi web, seluler, dan desktop, namun perlu dicatat bahwa Javascript adalah bahasa pemrograman komputer single-thread dan sinkron.



Contoh kode sederhana diberikan untuk memahami konsepnya.





metode fungsi1 ( ) {

menghibur. catatan ( 'Fungsi 1' )

}

metode fungsi2 ( ) {

menghibur. catatan ( 'Fungsi 2' )

}

metode1 ( )

metode2 ( )

Dalam kode ini, dua fungsi sederhana dibuat dan metode1 dipanggil terlebih dahulu sehingga metode1 akan dicatat terlebih dahulu dan kemudian berpindah ke yang berikutnya.

Keluaran



Javascript sebagai bahasa pemrograman sinkron

Javascript adalah bahasa pemrograman sinkron dan mengeksekusi setiap baris langkah demi langkah bergerak dari atas ke bawah dengan hanya satu baris yang dieksekusi pada satu waktu. Dalam contoh kode yang diberikan di atas, metode1 dicatat terlebih dahulu di terminal, lalu metode2.

Javascript sebagai Bahasa Pemblokiran

Menjadi bahasa javascript yang sinkron memiliki fungsi pemblokiran. Tidak peduli berapa lama waktu yang dibutuhkan untuk menyelesaikan proses yang sedang berlangsung, namun proses baru tidak akan dimulai sampai proses sebelumnya telah selesai. Pada contoh kode di atas misalkan ada banyak kode script di metode1 tidak peduli berapa lama waktu yang dibutuhkan baik 10 detik atau satu menit metode2 tidak akan dieksekusi sampai semua kode di metode1 telah dieksekusi.

Pengguna mungkin pernah mengalami hal ini saat menjelajah. Ketika aplikasi web dijalankan di browser di back-end, sejumlah besar kode sedang dieksekusi sehingga browser tampak terhenti selama beberapa waktu sebelum mengembalikan akses kontrol ke pengguna. Perilaku ini dikenal sebagai pemblokiran. Browser tidak dapat menerima permintaan masuk lebih lanjut hingga permintaan saat ini telah diproses.

Javascript adalah Bahasa thread tunggal

Untuk menjalankan program dalam javascript, fungsionalitas thread digunakan. Thread hanya mampu melakukan satu tugas dalam satu waktu. Bahasa pemrograman lain mendukung multi-threading dan dapat menjalankan banyak tugas secara paralel, javascript hanya berisi satu thread untuk mengeksekusi skrip kode apa pun.

Menunggu dalam Javascript

Terlihat dari namanya di bagian ini, kita harus menunggu permintaan kita diproses untuk melanjutkan lebih jauh. Penantiannya bisa memakan waktu beberapa menit dan selama itu tidak ada permintaan lebih lanjut yang dilayani. Jika skrip kode dilanjutkan tanpa menunggu maka kode akan mengalami kesalahan. Beberapa fungsi akan diimplementasikan dalam Javascript atau lebih khusus lagi Node.js untuk membuat kode menjadi asinkron.

Sekarang kita telah memahami berbagai aspek Javascript, mari kita memahami sinkron dan asinkron dengan beberapa contoh sederhana.

Eksekusi kode secara sinkron dalam Javascript

Sinkron artinya kode dijalankan secara berurutan atau lebih sederhana langkah demi langkah dimulai dari atas dan bergerak ke bawah baris demi baris.

Di bawah ini diberikan contoh yang dapat membantu memahami:

// aplikasi.js

menghibur. catatan ( 'Satu' )

menghibur. catatan ( 'Dua' )

menghibur. catatan ( 'Tiga' )

Dalam kode ini, ada tiga pernyataan console.log yang masing-masing mencetak sesuatu. Pertama, pernyataan pertama yang akan mencetak 'Satu' di konsol dikirim ke tumpukan panggilan selama 1 ms (perkiraan) kemudian dicatat ke terminal. Setelah itu, pernyataan kedua dimasukkan ke dalam tumpukan panggilan dan sekarang waktunya adalah 2 ms dengan satu tambahan dari pernyataan sebelumnya dan kemudian mencatat “Dua” ke konsol. Terakhir, pernyataan terakhir dimasukkan ke dalam tumpukan panggilan untuk saat ini waktunya adalah 3 ms dan mencatat “Tiga” di konsol.

Kode di atas dapat dijalankan dengan menjalankan perintah berikut:

aplikasi simpul. js

Keluaran

Fungsinya dijelaskan di atas secara rinci dan dengan mempertimbangkannya, output akan masuk ke konsol dalam sekejap mata:

Eksekusi kode asinkron dalam Javascript

Sekarang mari kita memfaktorkan ulang kode yang sama dengan memperkenalkan callback dan membuat kode tersebut asinkron. Kode di atas dapat difaktorkan ulang menjadi:

// aplikasi.js
fungsi printOne ( panggilan balik ) {
setWaktu habis ( fungsi ( ) {
menghibur. catatan ( 'Satu' ) ;
panggilan balik ( ) ;
} , 1000 ) ;
}
fungsi printDua ( panggilan balik ) {
setWaktu habis ( fungsi ( ) {
menghibur. catatan ( 'Dua' ) ;
panggilan balik ( ) ;
} , 2000 ) ;
}
fungsi printTiga ( ) {
setWaktu habis ( fungsi ( ) {
menghibur. catatan ( 'Tiga' ) ;
} , 3000 ) ;
}
menghibur. catatan ( 'Mulai dari program' ) ;
cetakSatu ( fungsi ( ) {
cetakDua ( fungsi ( ) {
cetakTiga ( ) ;
} ) ;
} ) ;
menghibur. catatan ( 'Akhir program' ) ;

Dalam kode di atas:

  • Tiga fungsi dideklarasikan untuk mencetak “Satu”, “Dua” dan “Tiga”, masing-masing fungsi memiliki parameter panggilan balik yang memungkinkan eksekusi kode secara berurutan.
  • Batas waktu diatur menggunakan fungsi setTimeout dan ada pernyataan console.log untuk dicetak setelah penundaan tertentu.
  • Dua pesan dicetak “Awal Program” dan “Akhir Program” yang menunjukkan awal dan akhir program.
  • Program dimulai dengan mencetak “Awal Program” setelah itu fungsi printOne dijalankan dengan penundaan 1 detik, kemudian fungsi printTwo dijalankan dengan penundaan 2 detik, dan terakhir fungsi printThree dijalankan dengan penundaan 3 detik. menunda.
  • Program tidak menunggu eksekusi kode asinkron di dalam fungsi setTimeouts yang mencatat pernyataan “Akhir Program” sebelum mencetak Satu, Dua, dan Tiga.

Keluaran

Jalankan kode di atas dengan menjalankan perintah ini di terminal:

aplikasi simpul. js

Sekarang output di terminal akan muncul secara asinkron seperti:

Sekarang setelah kita memiliki pemahaman lengkap tentang eksekusi sinkron dan asinkron, mari kita memperkuat konsep loop peristiwa di Node.js.

Node.js: Mekanisme Perulangan Peristiwa

Eksekusi tugas sinkron dan asinkron dikelola oleh loop peristiwa di Node.js. Eksekusi dipanggil segera setelah proyek Node.js diluncurkan dan dengan lancar mentransfer tugas kompleks ke sistem. Hal ini memastikan bahwa tugas-tugas lain dapat berjalan lancar di thread utama.

Penjelasan Visual Event Loop di Node.js

Perulangan peristiwa bersifat kontinu dan semi-tak terbatas di Node.js. Perulangan peristiwa dipanggil oleh awal skrip kode Node.js, dan bertanggung jawab untuk membuat panggilan API asinkron dan memanggil proses.Tick(), dan menjadwalkan pengatur waktu kemudian melanjutkan eksekusi perulangan peristiwa.

Di Node.js, lima tipe antrian utama menangani callback:

  • “Antrian Timer” umumnya dikenal sebagai min-heap bertanggung jawab untuk menangani panggilan balik yang terkait dengan “setTimeout” dan “setInterval”.
  • Callback untuk operasi asinkron seperti pada modul “fs” dan “http” ditangani oleh “I/O Queue”.
  • 'Periksa Antrean' berisi panggilan balik untuk fungsi 'setImmediate' yang unik untuk Node.
  • 'Tutup Antrean' mengelola panggilan balik yang terkait dengan peristiwa penutupan tugas asinkron apa pun.
  • Terakhir, ada dua antrian berbeda di antrian “Tugas Mikro”:
    • Antrian “nextTick” berisi callback yang terkait dengan fungsi “process.nextTick”.
    • Antrean “Janji” mengontrol panggilan balik yang terkait dengan Janji asli.

Fungsionalitas Event Loop di Node.js

Perulangan peristiwa berfungsi berdasarkan persyaratan khusus yang mengontrol urutan eksekusi panggilan balik. Kode Javascript sinkron pengguna diberi prioritas pada awal proses, sehingga perulangan peristiwa hanya dimulai ketika tumpukan panggilan dihapus. Urutan eksekusi berikut mengikuti pola terstruktur:

Prioritas tertinggi diberikan kepada callback di antrean microtask lalu bergerak untuk menjalankan tugas di antrean nextTick diikuti dengan tugas di antrean Promise. Proses dalam panggilan balik antrian pengatur waktu kemudian ditangani setelah antrian tugas mikro dikunjungi kembali setelah setiap panggilan balik pengatur waktu. Callback di antrian I/O, periksa dan tutup kemudian dieksekusi dalam pola yang sama dengan antrian tugas mikro yang dikunjungi setelah setiap fase.

Perulangan terus dijalankan jika ada lebih banyak callback yang harus diproses. Ketika skrip kode telah berakhir atau tidak ada panggilan balik yang tersisa untuk diproses, perulangan peristiwa berakhir secara efisien.

Sekarang setelah kita memahami secara mendalam Event loop, mari kita lihat fitur-fiturnya.

Fitur loop acara di Node.js

Fitur utamanya adalah:

  • Perulangan peristiwa adalah perulangan tak terbatas dan terus menjalankan tugas segera setelah tugas diterima dan masuk ke mode tidur jika tidak ada tugas tetapi mulai berfungsi segera setelah tugas diterima.
  • Tugas-tugas dalam antrian acara dijalankan hanya ketika tumpukan kosong berarti tidak ada operasi aktif.
  • Callback dan janji dapat digunakan dalam loop acara.
  • Karena perulangan peristiwa mengikuti prinsip antrian tipe data Abstrak, perulangan ini memenuhi tugas pertama kemudian melanjutkan ke tugas berikutnya.

Setelah memahami secara menyeluruh tentang perulangan peristiwa, dan logika eksekusi asinkron dan sinkron, memahami berbagai fase dapat memperkuat konsep perulangan peristiwa.

Fase Perulangan Acara Node.js

Seperti disebutkan di atas, perulangan peristiwa bersifat semi-tak terbatas. Ini memiliki banyak fase tetapi beberapa fase digunakan untuk penanganan internal. Fase-fase ini tidak berpengaruh apa pun pada skrip kode.

Perulangan peristiwa mengikuti fungsionalitas Antrean dan menjalankan tugas berdasarkan prinsip masuk pertama dan keluar pertama. Pengatur waktu yang dijadwalkan akan ditangani oleh sistem operasi hingga habis masa berlakunya. Pengatur waktu yang kedaluwarsa kemudian ditambahkan ke antrean panggilan balik untuk pengatur waktu.

Perulangan peristiwa mengeksekusi tugas-tugas dalam antrian pengatur waktu satu per satu hingga tidak ada lagi tugas yang tersisa atau mencapai jumlah tugas maksimum yang diperbolehkan. Pada bagian di bawah ini, fase inti dari perulangan peristiwa dijelaskan.

Fase Pengatur Waktu

Di Node.js terdapat API pengatur waktu yang dapat menjadwalkan fungsi-fungsi yang akan dieksekusi di kemudian hari. Setelah waktu yang dialokasikan berlalu, panggilan balik pengatur waktu akan dijalankan segera setelah dijadwalkan; namun, penundaan mungkin terjadi baik dari sistem operasi atau karena eksekusi callback lainnya.

API pengatur waktu memiliki tiga fungsi utama:

  • setWaktu habis
  • set Segera
  • setInterval

Fungsi-fungsi yang disebutkan di atas bersifat sinkron. Fase pengatur waktu dalam loop peristiwa memiliki cakupan terbatas pada fungsi setTimeout dan setInterval. Sedangkan fungsi check menangani fungsi setImmediate.

Mari kita pertimbangkan contoh sederhana untuk memperkuat bagian teoritis:

// aplikasi.js

fungsi tertundaFungsi ( ) {

menghibur. catatan ( 'fungsi yang tertunda dijalankan setelah batas waktu habis' ) ;

}

menghibur. catatan ( 'Mulai dari program' ) ;

setWaktu habis ( fungsi tertunda, 2000 ) ;

menghibur. catatan ( 'Akhir program' ) ;

Dalam kode ini:

  • Program dimulai dengan mencatat pernyataan “Awal Program” ke terminal.
  • Kemudian fungsi tertunda dipanggil dengan pengatur waktu 2 ms, skrip kode tidak berhenti dan melanjutkan penanganan lebih lanjut penundaan di latar belakang.
  • Pernyataan “Akhir Program dicatat setelah pernyataan pertama.
  • Setelah penundaan selama 2 ms, pernyataan dalam fungsi tertunda dicatat ke terminal.

Keluaran

Outputnya akan muncul sebagai:

Dapat dilihat bahwa kode tidak dihentikan untuk diproses fungsi tertunda; itu bergerak maju dan setelah penundaan, panggilan balik fungsi diproses.

Panggilan Balik yang Tertunda

Perulangan peristiwa memeriksa peristiwa yang terjadi, seperti membaca file, aktivitas jaringan, atau tugas input/output, dalam fase polling. Penting untuk diketahui bahwa, di Node.js, hanya beberapa peristiwa yang ditangani dalam fase pemungutan suara ini. Namun, pada iterasi berikutnya dari perulangan peristiwa, peristiwa tertentu mungkin ditunda ke fase yang tertunda. Ini adalah konsep utama yang perlu diingat ketika mengoptimalkan dan memecahkan masalah kode Node.js yang melibatkan operasi berbasis peristiwa yang kompleks.

Penting untuk dipahami bahwa selama fase callback menunggu, loop peristiwa menambahkan peristiwa yang ditunda ke antrean callback yang tertunda dan menjalankannya. Fase ini juga menangani beberapa kesalahan soket TCP yang dihasilkan sistem, seperti kejadian kesalahan ECONNREFUSED pada sistem operasi tertentu.

Di bawah ini sebuah contoh disebutkan untuk memperkuat konsep tersebut:

// aplikasi.js
konstanta fs = memerlukan ( 'fs' ) ;
fungsi readFileAsync ( filePath, panggilan balik ) {
fs. bacaFile ( './PromiseText.txt' , 'utf8' , fungsi ( salah, data ) {
jika ( berbuat salah ) {
menghibur. kesalahan ( ` Kesalahan membaca file : $ { berbuat salah. pesan } ` ) ;
} kalau tidak {
menghibur. catatan ( ` Mengajukan isi : $ { data } ` ) ;
}
panggilan balik ( ) ;
} ) ;
}
menghibur. catatan ( 'Mulai dari program' ) ;
bacaFileAsync ( './PromiseText.txt' , fungsi ( ) {
menghibur. catatan ( 'Panggilan balik pembacaan file dijalankan' ) ;
} ) ;
menghibur. catatan ( 'Akhir program' ) ;

Dalam kode ini:

  • Program dimulai dengan mencatat pernyataan “Mulai Program” di terminal.
  • readFileAsync didefinisikan secara asinkron untuk membaca konten file “PromiseText.txt”. Ini adalah fungsi berparametri yang menjalankan fungsi panggilan balik setelah file dibaca.
  • Fungsi readFileAsync dipanggil untuk memulai proses pembacaan file.
  • Dalam proses membaca file, program tidak berhenti; sebaliknya, ia melanjutkan ke pernyataan berikutnya dan mencatatnya ke terminal “Akhir Program”.
  • Peristiwa pembacaan file yang tidak sinkron diproses di latar belakang oleh loop peristiwa.
  • Setelah file dibaca secara asinkron dan konten telah dicatat ke terminal, program akan mencatat konten file ke terminal. Setelah itu, ia mencatat pesan berikut 'Panggilan balik pembacaan file dieksekusi'.
  • Perulangan peristiwa menangani operasi panggilan balik yang tertunda di fase berikutnya.

Keluaran

Hasil dari eksekusi di atas adalah:

Idle, Fase Persiapan di Node.js

Fase idle digunakan untuk menangani fungsi internal di Node.js sehingga bukan fase standar. Itu tidak mempengaruhi skrip kode. Fase idle seperti periode istirahat untuk loop peristiwa yang mengelola tugas-tugas berprioritas rendah di latar belakang. Contoh sederhana untuk memahami fase ini adalah:

konstanta { menganggur } = memerlukan ( 'idle-gc' ) ;

menganggur. mengabaikan ( ) ;

Dalam kode ini, modul “idle-gc” digunakan yang memungkinkan untuk mengabaikan fase idle. Ini berfungsi untuk menangani situasi ketika perulangan peristiwa sibuk dan tugas latar belakang tidak dilakukan. Penggunaan idle.ignore dirasa kurang maksimal karena dapat menyebabkan masalah performa.

Fase polling di Node.js

Fase polling di Node.js berfungsi sebagai:

  • Ini menangani peristiwa dalam antrian jajak pendapat dan melakukan tugas terkait.
  • Ini memutuskan berapa banyak waktu yang dihabiskan untuk menunggu dan memeriksa operasi I/O dalam proses.

Saat loop peristiwa memasuki fase polling karena tidak adanya pengatur waktu, salah satu tugas di bawah ini akan dilakukan:

  • Dalam fase polling loop peristiwa di Node.js, peristiwa I/O yang tertunda diantrekan dan kemudian dieksekusi dalam prosedur berurutan mengikuti prinsip Masuk Pertama dan Keluar Pertama hingga antrian menjadi kosong. Selama eksekusi callback, antrian nextTick dan microtasks juga beraksi. Hal ini memastikan kelancaran dan memungkinkan penanganan operasi I/O dengan lebih efisien dan andal.
  • Jika antrian kosong dan skrip belum dijadwalkan oleh fungsi setImmediate() maka event loop akan berakhir dan akan dilanjutkan ke tahap berikutnya (periksa). Di sisi lain, jika penjadwalan skrip telah dilakukan oleh fungsi setImmediate(), loop peristiwa memungkinkan callback ditambahkan ke antrian yang akan dieksekusi olehnya.

Ini paling baik diilustrasikan dengan contoh kode sederhana:

setWaktu habis ( ( ) => {

menghibur. catatan ( 'Operasi asinkron selesai' ) ;

} , 2000 ) ;

menghibur. catatan ( 'Awal' ) ;

set Segera ( ( ) => {

menghibur. catatan ( 'panggilan balik setImmediate dijalankan' ) ;

} ) ;

menghibur. catatan ( 'Akhir' ) ;

Dalam kode ini:

  • Dua pesan “Mulai” dan “Akhir” menunjukkan inisiasi dan penghentian program.
  • Fungsi setTimeout() menyetel fungsi panggilan balik dengan penundaan 2 ms dan mencatat “Operasi asinkron selesai” ke terminal.
  • Fungsi setImmediate() mencatat pesan “panggilan balik setImmediate dieksekusi” ke terminal setelah pesan Mulai dicatat ke terminal.

Keluaran

Outputnya akan menampilkan pesan hanya dengan pengamatan sebentar bahwa 'Operasi asinkron selesai' memerlukan waktu dan dicetak setelah pesan 'Akhir':

Fase Pemeriksaan Node.js

Setelah fase polling dijalankan, callback dalam fase pemeriksaan kemudian dieksekusi. Jika skrip kode dijadwalkan menggunakan fungsi setImmediate() dan fungsi polling bebas, perulangan peristiwa bekerja dengan berpindah langsung ke fase pemeriksaan alih-alih tetap menganggur. Fungsi setImmediate() adalah pengatur waktu unik yang beroperasi selama berbagai fase perulangan peristiwa.

API libuv digunakan untuk merencanakan eksekusi panggilan balik setelah eksekusi fase polling selesai. Selama eksekusi kode, loop peristiwa memasuki fase polling yang menunggu permintaan koneksi masuk. Dalam kasus lain jika callback dijadwalkan menggunakan fungsi setImmediate() dan fase polling dihentikan tanpa aktivitas apa pun, callback akan berpindah ke fase pemeriksaan alih-alih menunggu. Perhatikan contoh di bawah ini untuk pemahaman:

// aplikasi.js

menghibur. catatan ( 'Awal' ) ;

set Segera ( ( ) => {

menghibur. catatan ( 'Panggilan balik segera' ) ;

} ) ;

menghibur. catatan ( 'Akhir' ) ;

Dalam kode ini tiga pesan masuk ke terminal. Fungsi setImmediate() akhirnya mengirimkan panggilan balik untuk mencatat pesan “ Panggilan balik segera ” ke terminal.

Keluaran

Output dari kode di atas akan muncul dalam urutan berikut:

Node.js menutup panggilan balik

Node.js menggunakan fase penutupan ini untuk menjalankan callback guna menutup peristiwa dan mengakhiri iterasi perulangan peristiwa. Setelah koneksi ditutup, event loop menangani event penutupan pada fase ini. Dalam fase perulangan peristiwa ini, “nextTick()” dan tugas mikro dibuat dan diproses serupa dengan fase lainnya.

Fungsi process.exit digunakan untuk mengakhiri perulangan peristiwa kapan saja. Perulangan peristiwa akan mengabaikan operasi asinkron apa pun yang tertunda dan proses Node.js akan dihentikan.

Contoh sederhana untuk dipertimbangkan adalah:

// aplikasi.js
konstanta bersih = memerlukan ( 'bersih' ) ;
konstanta server = bersih. buatServer ( ( stopkontak ) => {
stopkontak. pada ( 'menutup' , ( ) => {
menghibur. catatan ( 'Soket tertutup' ) ;
} ) ;
stopkontak. pada ( 'data' , ( data ) => {
menghibur. catatan ( 'Data yang diterima:' , data. keString ( ) ) ;
} ) ;
} ) ;
server. pada ( 'menutup' , ( ) => {
menghibur. catatan ( 'Server ditutup' ) ;
} ) ;
konstanta pelabuhan = 3000 ;
server. mendengarkan ( pelabuhan, ( ) => {
menghibur. catatan ( `Server mendengarkan pada port $ { pelabuhan } ` ) ;
} ) ;
setWaktu habis ( ( ) => {
menghibur. catatan ( 'Menutup server setelah 10 detik' ) ;
server. menutup ( ) ;
proses. KELUAR ( ) ;
} , 10.000 ) ;

Dalam kode ini:

  • const net = memerlukan('bersih') ” mengimpor modul net yang diperlukan untuk menangani server TCP dan “ const server = net.createServer((soket) => { ” membuat instance server TCP baru.
  • socket.on('tutup', () => {… } ” mendengarkan “close” pada semua soket. Ketika sambungan soket ditutup pesan “Socket Closed” dicatat ke terminal.
  • soket.on('data', (data) => {} ” memeriksa data yang masuk dari semua soket individual dan mencetaknya menggunakan fungsi “.toString()”.
  • server.on('tutup', () => {…} ” memeriksa peristiwa “tutup” pada server itu sendiri, dan ketika koneksi server ditutup, ia mencatat pesan “Server Ditutup” ke terminal.
  • server.dengarkan(pelabuhan, () => {…} ” mendengarkan koneksi masuk di port.
  • setWaktu habis(() => {…} ” menyetel pengatur waktu 10 ms untuk menutup server.

Demikianlah pembahasan mengenai berbagai fase event loop di Node.js. Sebelum mengambil kesimpulan, mari kita bahas satu hal terakhir yaitu cara keluar dari event loop di Node.js.

Keluar dari Event Loop di Node.js

Perulangan peristiwa berada dalam fase eksekusi selama ada beberapa tugas di semua antrian fase perulangan peristiwa. Perulangan peristiwa berakhir setelah fase keluar dikeluarkan dan panggilan balik pendengar keluar kembali jika tidak ada lagi tugas dalam antrean.

Cara eksplisit untuk mengakhiri perulangan peristiwa adalah dengan menggunakan metode “.exit”. Proses aktif Node.js akan segera berhenti segera setelah fungsi process.exit dipanggil. Semua acara yang dijadwalkan dan tertunda akan dibatalkan:

proses. pada ( 'KELUAR' , ( kode ) => {

menghibur. catatan ( `Keluar dengan kode keluar : $ { kode } ` ) ;

} ) ;

proses. KELUAR ( 1 ) ;

Pengguna dapat mendengarkan fungsi .exit. Perlu diperhatikan bahwa fungsi “.exit” harus sinkron karena program Node.js akan keluar segera setelah mendengarkan kejadian ini.

Ini menyimpulkan diskusi tentang event loop. Artikel mendalam yang mencakup semua konsep, fase, dan contoh yang terkait dengan event loop.

Kesimpulan

Sebelum memahami perulangan peristiwa, gambaran umum konsep sinkron dan asinkron dapat membantu memahami aliran kode dalam perulangan peristiwa. Eksekusi sinkron berarti eksekusi langkah demi langkah, sedangkan eksekusi asinkron berarti menghentikan beberapa langkah tanpa menunggu penyelesaiannya. Cara kerja loop peristiwa beserta semua fase beserta contoh yang sesuai dibahas dalam artikel.