Menu
CoddyTech

Event Loop

Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 18 dari 24.

Callback dan promise berjalan belakangan, dan bug tersembunyi saat kamu tidak tahu persis kapan hal itu terjadi.

Node menjalankan semua kode sinkron sampai selesai terlebih dahulu. Lalu Node menjalankan microtask: callback promise dan fungsi yang diberikan ke queueMicrotask. Baru setelah itu timer dijalankan, termasuk setTimeout(fn, 0), masing-masing saat waktunya tiba.

setTimeout(() => console.log('C timer'), 0);
Promise.resolve().then(() => console.log('B promise'));
console.log('A sync');
// A sync, B promise, C timer

Jeda 0 berarti secepat mungkin setelah microtask, tidak pernah sebelum microtask. Timer berjalan sesuai urutan jedanya. Jika jedanya sama, timer yang disetel lebih dahulu akan berjalan lebih dahulu.

challenge icon

Tantangan

Mudah
  • order.js mencetak 1 sync, 2 microtask, 3 timeout, 4 timeout later, dengan urutan tersebut.
  • Biarkan keempat baris tetap di tempatnya. Bungkus baris-baris itu dalam satu pemanggilan queueMicrotask dan dua pemanggilan setTimeout.

Jalankan node order.js dan bandingkan hasilnya dengan tebakanmu. Lalu beri kedua timer jeda 0 dan jalankan lagi.

Coba sendiri

// Buat baris-baris ini menampilkan output sesuai urutan angka tanpa memindahkannya.
// Sebagai gantinya, bungkus baris-baris itu dengan queueMicrotask dan setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Node.js

Latihan sendiri: Playground Express