Задача на Event Loop: определите порядок вывода в консоль при наличии setTimeout, Promise и синхронного кода. Что будет выведено последним и почему?

В JavaScript порядок выполнения кода с setTimeout, Promise и синхронным кодом определяется Event Loop и очередями задач (task queue и microtask queue).

Короткий ответ

Что ответить на собеседовании

В JavaScript порядок выполнения кода с setTimeout, Promise и синхронным кодом определяется Event Loop и очередями задач (task queue и microtask queue).

Подробный разбор

Ответ с пояснениями

В JavaScript порядок выполнения кода с setTimeout, Promise и синхронным кодом определяется Event Loop и очередями задач (task queue и microtask queue).

  1. Сначала выполняется весь синхронный код.
  2. Затем выполняются все микротаски (microtasks), например, обработчики Promise.
  3. После этого выполняются макротаски (tasks), например, setTimeout.

Пример:

console.log('Синхронный код');

setTimeout(() => {
  console.log('setTimeout');
}, 0);

Promise.resolve().then(() => {
  console.log('Promise');
});

Вывод будет:

Синхронный код
Promise
setTimeout

Последним будет выведено сообщение из setTimeout, потому что setTimeout ставится в очередь макротасков, которая обрабатывается после микротасков (Promise).

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку