Back to questions
Middle+
2
В каком порядке выведется console.log и почему? Объясни порядок выполнения синхронного и асинхронного кода (Event Loop, макро- и микрозадачи).
Companies where asked
VK Tech
Answer from AI
sobes.tech AI
В JavaScript порядок вывода console.log зависит от того, синхронный или асинхронный код выполняется.
Event Loop — это механизм, который управляет выполнением кода, обработкой событий и асинхронных операций. Он работает с двумя основными очередями задач:
- Микрозадачи (microtasks): промисы, process.nextTick (Node.js), MutationObserver.
- Макрозадачи (macrotasks): setTimeout, setInterval, I/O, UI-события.
Порядок выполнения:
- Выполняется весь синхронный код.
- После синхронного кода выполняются все микрозадачи из очереди микрозадач.
- Затем Event Loop берет одну макрозадачу и выполняет её.
- После макрозадачи снова выполняются все микрозадачи.
Пример:
console.log('Синхронный 1');
setTimeout(() => console.log('Макрозадача (setTimeout)'), 0);
Promise.resolve().then(() => console.log('Микрозадача (Promise)'));
console.log('Синхронный 2');
Вывод будет:
Синхронный 1
Синхронный 2
Микрозадача (Promise)
Макрозадача (setTimeout)
Потому что сначала выполняется весь синхронный код, потом микрозадачи, потом макрозадачи.
Таким образом, console.log в синхронном коде выведется сразу, а в асинхронных — в зависимости от типа задачи и очереди.