Порядок вывода сообщений в консоль (пример 61)

Порядок: script start, promise1, promise2, setTimeout. Обработчики цепочки Promise выполняются до перехода к задаче таймера.

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

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

Порядок: script start, promise1, promise2, setTimeout. Обработчики цепочки Promise выполняются до перехода к задаче таймера.

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

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

Условие

Какой последовательностью появятся записи в консоли при выполнении следующего кода?

console.log('script start');

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

Promise
.resolve()
.then(function() {
    console.log('promise1');
})
.then(function() {
    console.log('promise2');
});

Ответ

Порядок: script start, promise1, promise2, setTimeout. Обработчики цепочки Promise выполняются до перехода к задаче таймера.

Первый then становится микрозадачей после выполнения основного стека. Его завершение делает готовым второй then; очередь микрозадач опустошается до следующей задачи. Нулевая задержка setTimeout не меняет этот порядок.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее