Вывод: 1, 2, 4, 'timerStart', 'timerEnd', 'success'. resolve меняет состояние Promise, но его then выполняется только после завершения текущего обработчика таймера.
Определение последовательности вывода в консоль (задача 3)
Вывод: 1, 2, 4, 'timerStart', 'timerEnd', 'success'. resolve меняет состояние Promise, но его then выполняется только после завершения текущего обработчика таймера.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Укажите порядок и значения, которые появятся в консоли при выполнении следующего кода:
const myPromise = new Promise((resolve) => {
console.log(1);
setTimeout(() => {
console.log("timerStart");
resolve("success");
console.log("timerEnd");
}, 0);
console.log(2);
});
myPromise.then((res) => {
console.log(res);
});
console.log(4);
Ответ
Вывод: 1, 2, 4, 'timerStart', 'timerEnd', 'success'. resolve меняет состояние Promise, но его then выполняется только после завершения текущего обработчика таймера.
Executor Promise запускается синхронно, поэтому сначала печатаются 1 и 2, затем внешний console.log выводит 4. Таймер позже печатает timerStart, разрешает Promise значением success и продолжает до timerEnd. Только после освобождения стека выполняется микрозадача then. Вызов resolve не является return и не прерывает последующие строки функции.