Difference between macrotask queue and microtask queue

JavaScript has two queues:

Macrotask queue / Task queue

  • Big tasks like setTimeout, events.
  • Includes callbacks from setTimeout, setInterval, setImmediate (Node), I/O, DOM events.
  • The event loop processes one macrotask, then checks microtasks.

Microtask queue

  • Smaller, high-priority tasks like promises.
  • Includes callbacks from Promise.then/catch/finally, queueMicrotask, MutationObserver.
  • The event loop drains all microtasks before handling the next macrotask.

Priority: microtasks are higher priority, so they run before the next task.