JavaScript adalah single-threaded (satu jalur). Ia memiliki satu Call Stack. Event Loop adalah pengontrol lalu lintas yang memutuskan apa yang masuk ke stack tersebut.
Jalur Prioritas (Microtasks)
Tidak semua tugas itu sama.
• MacroTasks (setTimeout, setInterval): Jalur reguler.
• MicroTasks (Promises, QueueMicrotask): Jalur VIP.
Event Loop selalu mengosongkan jalur VIP (Promises) sebelum memproses mobil reguler berikutnya (setTimeout).
Kuis Pamungkas
Prediksi urutannya sebelum menjalankan ini. Ini adalah pertanyaan wawancara yang sangat umum.
javascript
console.log("1. Mulai");
setTimeout(() => {
console.log("2. Timeout (Macro)");
}, 0);
Promise.resolve().then(() => {
console.log("3. Promise (Micro)");
});
console.log("4. Selesai");
/*
Logika Urutan:
1. "Mulai" (Sinkron)
2. "Selesai" (Sinkron)
3. "Promise" (Antrean Microtask - Prioritas Lebih Tinggi)
4. "Timeout" (Antrean Macrotask - Prioritas Lebih Rendah)
*/