setTimeout dan urutan eksekusi

JavaScript tidak menunggu. setTimeout menjadwalkan fungsi untuk dijalankan nanti, lalu kode berikutnya langsung berjalan. Karena itu output kode ini bukan urut dari atas ke bawah — ini konsep pertama yang harus benar sebelum belajar Promise. Bahkan setTimeout(fn, 0) tetap dijalankan setelah seluruh kode sinkron selesai, karena tugas terjadwal baru diambil ketika antrean utama kosong.

👀 Contoh dulu

console.log('Mulai');

setTimeout(() => {
  console.log('Ditunda 1 detik');
}, 1000);

setTimeout(() => {
  console.log('Ditunda 0 detik');
}, 0);

console.log('Selesai');

Hasilnya: Mulai Selesai Ditunda 0 detik Ditunda 1 detik

💡 Semua kode biasa (sinkron) selesai LEBIH DULU, baru callback setTimeout dijalankan — bahkan yang delay-nya 0.

📝 Sekarang giliranmu

Tampilkan 'Pertama', lalu setTimeout yang menampilkan 'Kedua' setelah 0 ms, lalu 'Ketiga'. Perhatikan urutan output yang muncul.

Preview