Microtasks (Promise callbacks, queueMicrotask) run after each macrotask. Macrotasks (setTimeout, I/O) run one per loop iteration.
Execution order:
1setTimeout(() => console.log("macrotask 1"), 0);2setTimeout(() => console.log("macrotask 2"), 0);3Promise.resolve().then(() => console.log("microtask 1"));4Promise.resolve().then(() => console.log("microtask 2"));5// Output: microtask 1, microtask 2, macrotask 1, macrotask 2
Key points: