Порядок: script start, promise1, promise2, setTimeout. Обработчики цепочки Promise выполняются до перехода к задаче таймера.
Порядок вывода сообщений в консоль (пример 61)
Порядок: 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 не меняет этот порядок.