Sobes.tech
Назад к вопросам
Middle+
1

В каком порядке выведется console.log и почему? Объясни порядок выполнения синхронного и асинхронного кода (Event Loop, макро- и микрозадачи).

Компании, где спрашивали
VK Tech

Ответ от нейросети

sobes.tech AI

В JavaScript порядок вывода console.log зависит от того, синхронный или асинхронный код выполняется.

Event Loop — это механизм, который управляет выполнением кода, обработкой событий и асинхронных операций. Он работает с двумя основными очередями задач:

  • Микрозадачи (microtasks): промисы, process.nextTick (Node.js), MutationObserver.
  • Макрозадачи (macrotasks): setTimeout, setInterval, I/O, UI-события.

Порядок выполнения:

  1. Выполняется весь синхронный код.
  2. После синхронного кода выполняются все микрозадачи из очереди микрозадач.
  3. Затем Event Loop берет одну макрозадачу и выполняет её.
  4. После макрозадачи снова выполняются все микрозадачи.

Пример:

console.log('Синхронный 1');
setTimeout(() => console.log('Макрозадача (setTimeout)'), 0);
Promise.resolve().then(() => console.log('Микрозадача (Promise)'));
console.log('Синхронный 2');

Вывод будет:

Синхронный 1
Синхронный 2
Микрозадача (Promise)
Макрозадача (setTimeout)

Потому что сначала выполняется весь синхронный код, потом микрозадачи, потом макрозадачи.

Таким образом, console.log в синхронном коде выведется сразу, а в асинхронных — в зависимости от типа задачи и очереди.