JavaScriptAdvanced#event-loop#async

Explain the event loop.

JavaScript runs on one call stack. When the stack empties, the loop drains all microtasks (promise callbacks, queueMicrotask) and then takes one macrotask (timers, I/O, events) — so promises always resolve before setTimeout(0).

Example
console.log(1);
setTimeout(() => console.log(4));
Promise.resolve().then(() => console.log(3));
console.log(2);
// 1, 2, 3, 4

Related Questions

1
JavaScriptAdvanced#event-loop#async

What are microtasks and macrotasks?

Open
2
JavaScriptIntermediate#async#promises

What is a Promise and what are its states?

Open
3
JavaScriptAdvanced#async#promises

Difference between Promise.all, allSettled, race and any?

Open