Ответ вслух Junior Промисы и async/await спрашивают часто обновлено

Промис: состояния и гарантии

Вопрос

Что такое промис? Какие у него состояния и гарантии?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Промис - объект с тремя состояниями: ожидание, выполнен, отклонён. Переход из ожидания происходит ровно один раз и необратим - повторный resolve игнорируется. then всегда возвращает новый промис, поэтому цепочки работают; если колбэк вернул промис, он автоматически разворачивается.

Что должно прозвучать в ответе

  • три состояния: pending, fulfilled, rejected

  • переход происходит один раз и необратим

  • then всегда возвращает новый промис - отсюда цепочки

  • колбэк then вызывается асинхронно, в микрозадаче, даже для готового промиса

  • возврат промиса из then разворачивается автоматически

  • необработанный reject даёт unhandledrejection

Что могут спросить следом

  • Что вернёт then, если колбэк бросит исключение
  • Чем finally отличается от then с двумя аргументами
  • Почему нельзя отменить промис

Разбор

Промис - объект с тремя состояниями: ожидание, выполнен, отклонён. Переход из ожидания происходит ровно один раз и необратим - повторный resolve игнорируется.

then всегда возвращает новый промис, поэтому цепочки работают; если колбэк вернул промис, он автоматически разворачивается. Колбэк вызывается всегда асинхронно, через очередь микрозадач, даже если промис уже готов - это гарантия предсказуемого порядка. Отклонение без обработчика всплывает как unhandledrejection.

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

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

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