Выбор ответа Junior Асинхронные паттерны обновлено

Executor промиса выполняется сразу

Вопрос

Что выведет код?

const p = new Promise((resolve) => {
  console.log('executor');
  resolve('ok');
  console.log('after resolve');
});
p.then((v) => console.log(v));
console.log('sync');

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: executor after resolve sync ok. Функция-executor вызывается синхронно прямо в new Promise. resolve не прерывает её, поэтому after resolve тоже выводится сразу. then всегда асинхронный: ok после синхронного sync. - resolve не работает как return. - Executor не…

Варианты ответа

  1. executor after resolve sync okправильный ответ
  2. executor sync ok after resolve
  3. sync executor after resolve ok
  4. executor ok after resolve sync

Разбор

Функция-executor вызывается синхронно прямо в new Promise. resolve не прерывает её, поэтому after resolve тоже выводится сразу. then всегда асинхронный: ok после синхронного sync.

  • resolve не работает как return.
  • Executor не откладывается.
  • Обработчик then не вызывается синхронно, даже если промис уже выполнен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме