Event Loop pada Node.js - Perwira Learning Center
1. Latar Belakang
Node.js dikenal sebagai runtime JavaScript yang cepat dan efisien untuk membangun aplikasi server-side. Salah satu alasan utama performanya yang baik adalah karena menggunakan arsitektur non-blocking I/O dan single-threaded.
Banyak orang bertanya:
Jika Node.js hanya menggunakan satu thread, bagaimana bisa menangani banyak
request sekaligus?
Jawabannya adalah karena adanya Event Loop. Event Loop adalah mekanisme inti di Node.js yang memungkinkan eksekusi kode asynchronous tanpa harus membuat banyak thread seperti pada bahasa lain.
Memahami Event Loop sangat penting agar kita bisa menulis kode yang efisien dan tidak menyebabkan aplikasi menjadi lambat atau blocking.
2. Alat dan Bahan
- Browser
- OS (Windows atau Linux atau MacOS)
- Code Editor (VSCODE)
- Node.js
3. Pembahasan
3.1 Apa itu event Loop?
Event Loop adalah mekanisme yang bertugas mengatur eksekusi kode synchronous dan asynchronous dalam Node.js.
Node.js bekerja dengan tiga komponen utama:
-
Call Stack → Tempat eksekusi kode synchronous
-
Callback Queue / Task Queue → Tempat menunggu callback asynchronous
-
Event Loop → Penghubung antara Call Stack dan Callback Queue
Event Loop akan terus mengecek:
-
Apakah Call Stack kosong?
-
Jika kosong, ambil tugas dari Callback Queue dan jalankan.
3.2 Contoh Sederhana Event Loop
console.log("Pertama");
setTimeout(() => {
console.log("Kedua");
}, 0);
console.log("Ketiga");
Pertama
Ketiga
Kedua
Mengapa begitu?
Karena:
-
console.log("Pertama")masuk ke Call Stack dan dieksekusi. -
setTimeoutdiproses oleh sistem asynchronous (Web API / Node API). -
console.log("Ketiga")langsung dijalankan. -
Setelah Call Stack kosong, Event Loop memindahkan callback
setTimeoutke Call Stack.
Walaupun delay 0 milidetik, tetap masuk antrian dulu.
3.3 Non-Blocking I/O
Node.js menggunakan non-blocking I/O, artinya operasi seperti membaca file atau mengambil data tidak menghentikan eksekusi program.
Contoh:
const fs = require("fs");
fs.readFile("data.txt", "utf8", (err, data) => {
console.log("File selesai dibaca");
});
console.log("Program tetap berjalan");
Output :
Program tetap berjalan
File selesai dibaca
Ini terjadi karena Event Loop mengatur agar operasi file berjalan di background.
3.4 Fase-Fase Event Loop
Event Loop memiliki beberapa fase utama:
-
Timers → Menjalankan callback
setTimeoutdansetInterval -
Pending Callbacks
-
Idle, Prepare
-
Poll → Mengambil event baru dan menjalankan I/O
-
Check → Menjalankan
setImmediate -
Close Callbacks
Fase ini berjalan secara berulang dalam satu siklus yang disebut loop.
3.5 Mengapa Event Loop Penting?
Tanpa Event Loop:
-
Node.js tidak bisa menangani banyak request sekaligus.
-
Semua proses akan berjalan blocking.
-
Performa server akan sangat buruk.
Dengan Event Loop:
-
Server bisa menangani ribuan koneksi secara efisien.
-
Cocok untuk aplikasi real-time seperti chat, API server, dan streaming.
4. Kesimpulan
Event Loop adalah inti dari cara kerja Node.js dalam menangani proses asynchronous. Meskipun Node.js berjalan dalam satu thread utama, Event Loop memungkinkan aplikasi tetap responsif dan efisien.
Memahami Event Loop membantu developer:
-
Menghindari blocking code
-
Menulis kode asynchronous dengan benar
-
Mengoptimalkan performa aplikasi
Bagi siapa pun yang ingin serius mendalami Node.js, memahami Event Loop adalah langkah penting untuk benar-benar mengerti bagaimana sistem bekerja di balik layar.
