JavaScript doesn’t just run code in order — it maintains multiple queues with different priorities:
- Call Stack: Currently executing code (highest priority)
- Microtask Queue: Promises, queueMicrotask, MutationObserver
- Macrotask Queue: setTimeout, setInterval, I/O, UI events
- Render Queue: requestAnimationFrame, style/layout/paint
console.log('1: Sync');
setTimeout(() => console.log('2: Macro'), 0);