Будут выведены 1, 2, 5, 4. Executor исполняется сразу, но созданный Promise остаётся pending, поэтому callback then с числом 3 не запускается.
Что выводит Promise, у которого не вызван resolve?
Будут выведены 1, 2, 5, 4. Executor исполняется сразу, но созданный Promise остаётся pending, поэтому callback then с числом 3 не запускается.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите вывод:
console.log(1);
new Promise(() => { console.log(2); })
.then(() => console.log(3));
setTimeout(() => console.log(4), 0);
console.log(5);
Ответ
Будут выведены 1, 2, 5, 4. Executor исполняется сразу, но созданный Promise остаётся pending, поэтому callback then с числом 3 не запускается.
Отсутствие resolve/reject не останавливает весь event loop: другой таймер продолжает работать. Promise не является командой «подождать всё приложение». Если операция по контракту должна завершаться, ей нужны явные пути успеха и ошибки, а при необходимости — timeout и отмена; таймер сам по себе не выполнит чужой pending Promise.