Loading...
Nullam dignissim, ante scelerisque the is euismod fermentum odio sem semper the is erat, a feugiat leo urna eget eros. Duis Aenean a imperdiet risus.
Event loop adalah mekanisme yang mengatur bagaimana Node.js mengeksekusi kode, memproses event, menjalankan callback, dan menangani operasi asynchronous. Meskipun Node.js hanya memiliki satu thread utama, event loop membuat Node.js seolah-olah dapat menangani banyak proses secara paralel.
Dengan event loop, Node.js tidak menunggu proses I/O selesai. Ia meneruskan tugas ke sistem (C++ APIs, libuv) dan melanjutkan hal lain sembari menunggu respons.
Cara kerja event loop dapat disederhanakan dalam beberapa fase:
setTimeout() dan setInterval() yang waktunya telah tercapai.setImmediate().socket.on('close').Bayangkan event loop seperti antrian tugas (queue). Setiap callback yang siap dijalankan akan masuk ke antrian, dan event loop mengeksekusinya satu per satu dengan cepat.
┌──────────────────────────┐
│ JavaScript │ (Kode utama berjalan di single thread)
└──────────┬───────────────┘
│
Event Loop
│
┌─────┬────┴───────┬─────┬──────┬────────┐
│Timers│ I/O Callbacks │ Poll │ Check │ Close│ ...
└──────┴──────────────┴──────┴────────────┘
Di luar event loop, Node.js menggunakan libuv yang bertugas mengelola thread pool untuk pekerjaan berat seperti kompresi, hashing, atau file I/O kompleks.
console.log("A");
setTimeout(() => {
console.log("B");
}, 0);
console.log("C");
Outputnya adalah:
A
C
B
Mengapa B belakangan? Karena setTimeout() diproses di fase Timers, dan callback-nya harus menunggu event loop kembali ke fase itu, walaupun delay-nya 0.
Walaupun keduanya terlihat sama, event loop memprosesnya di fase yang berbeda:
Terkadang setImmediate() dijalankan lebih cepat daripada setTimeout(..., 0) tergantung kapan event loop memasuki fase tertentu.
Dengan memahami event loop, kamu bisa:
Event loop adalah inti dari performa Node.js. Mekanisme ini memungkinkan Node.js untuk menangani ribuan permintaan dengan cepat tanpa harus menggunakan banyak thread. Dengan pemahaman yang baik mengenai fase-fase event loop, developer dapat mengoptimalkan aplikasi dan menulis kode asynchronous yang lebih efisien.
“Node.js cepat bukan karena multithread, tapi karena event loop yang cerdas.”