Когда выполняется executor Promise

Порядок: 1, 2, 4, 3. Executor вызывается синхронно при создании Promise, а обработчик then выполняется позже как микрозадача.

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

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

Порядок: 1, 2, 4, 3. Executor вызывается синхронно при создании Promise, а обработчик then выполняется позже как микрозадача.

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

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

Условие

Определите вывод:

console.log(1);
new Promise(resolve => {
  console.log(2);
  resolve(3);
}).then(console.log);
console.log(4);

Ответ

Порядок: 1, 2, 4, 3. Executor вызывается синхронно при создании Promise, а обработчик then выполняется позже как микрозадача.

Resolve меняет состояние Promise, но не запускает зарегистрированные реакции внутри текущего стека. Поэтому внешний console.log(4) успевает раньше then. Тяжёлые вычисления внутри executor всё равно блокируют поток: сама упаковка работы в new Promise не делает её фоновой.

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

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

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

Подробнее