Что выводит Promise, у которого не вызван resolve?

Будут выведены 1, 2, 5, 4. Executor исполняется сразу, но созданный Promise остаётся pending, поэтому callback then с числом 3 не запускается.

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

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

Будут выведены 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.

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

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

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

Подробнее