Як працює
- Call Stack — синхронний код виконується послідовно
- При зустрічі async-операції (HTTP-запит, setTimeout) — вона передається в Web API/libuv і виконується поза основним потоком
- Коли операція завершена — колбек потрапляє в Callback Queue
- Event Loop перевіряє: якщо Call Stack порожній — переносить колбек у стек
Macrotasks vs Microtasks
Microtasks (Promise.then, queueMicrotask) виконуються перед наступним macrotask (setTimeout, setInterval). Тому Promise.resolve().then(fn) виконається раніше за setTimeout(fn, 0).