Выбор ответа Junior Промисы и async/await обновлено

Что возвращает then

Вопрос

Что возвращает вызов promise.then(handler)?

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

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

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

Коротко

Правильный ответ: Новый промис: он выполнится результатом handler или отклонится при ошибке. then всегда создаёт новый промис.

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

  1. Новый промис: он выполнится результатом handler или отклонится при ошибкеправильный ответ
  2. Тот же самый promise, чтобы можно было строить цепочку из нескольких then
  3. Результат handler синхронно, если промис к этому моменту уже выполнен
  4. undefined: результат обработчика можно получить только внутри handler

Разбор

then всегда создаёт новый промис. Если обработчик вернул значение, новый промис выполнится им; вернул промис, новый будет следовать за ним; бросил исключение, новый отклонится. Именно поэтому цепочки работают, и каждый шаг может преобразовать результат. Это не тот же промис: p.then(f) === p даёт false. Обработчик вызывается асинхронно, так что синхронно получить его результат нельзя.

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

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

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