JavaScript является однопоточным, то есть может выполнять только одну операцию за раз. Event loop — это механизм, который обеспечивает асинхронное поведение, координируя три ключевых компонента: call stack (стек вызовов), microtask queue (очередь микротасков) и macrotask queue (очередь макротасков).
Event loop следует строгому повторяющемуся циклу:
Микротаски имеют более высокий приоритет и включают:
Promise (.then, .catch, .finally)queueMicrotask()MutationObserverМакротаски имеют более низкий приоритет и включают:
setTimeout и setIntervalconsole.log("1 - call stack");
setTimeout(() => console.log("3 - macrotask"), 0);
Promise.resolve().then(() => console.log("2 - microtask"));
Порядок вывода: 1 → 2 → 3
Ключевое отличие в том, что все микротаски обрабатываются до того, как event loop перейдёт к следующему макротаску. Это гарантирует, что коллбэки Promise всегда выполняются раньше любых ожидающих коллбэков setTimeout или setInterval, независимо от указанной задержки.
Event loop обрабатывает все микротаски из очереди перед выполнением одного макротаска, гарантируя, что колбэки Promise всегда выполняются до колбэков setTimeout.
Новый — ещё не проверен сообществом
Вы