Когда выполняется executor Promise относительно таймера?

Порядок: start, executor, end, timer, then. Executor нового Promise запускается синхронно; реакция then ждёт разрешения Promise внутри таймера.

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

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

Порядок: start, executor, end, timer, then. Executor нового Promise запускается синхронно; реакция then ждёт разрешения Promise внутри таймера.

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

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

Условие

Определите вывод браузерного кода:

console.log('start');
new Promise(resolve => {
  console.log('executor');
  setTimeout(() => { console.log('timer'); resolve(); }, 0);
}).then(() => console.log('then'));
console.log('end');

Ответ

Порядок: start, executor, end, timer, then. Executor нового Promise запускается синхронно; реакция then ждёт разрешения Promise внутри таймера.

Наличие Promise вокруг executor не переносит его тело в фон. Таймер срабатывает после завершения начального скрипта, печатает timer и вызывает resolve. Только тогда для зарегистрированного then планируется реакция. Promise описывает будущий результат, но не делает любую переданную ему работу автоматически асинхронной.

Источник: developer.mozilla.org.

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

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

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

Подробнее