PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Что такое Promise?

Асинхронность и Event Loop

Promise — это объект, представляющий результат асинхронной операции, который станет известен в будущем: успех (fulfilled) или ошибка (rejected).

Состояния

  • pending — в ожидании, результата ещё нет.
  • fulfilled — успешно завершён, есть значение.
  • rejected — завершён с ошибкой.

Переход происходит один раз и необратим: из pending в fulfilled или rejected.

Как использовать

const promise = new Promise((resolve, reject) => {
  setTimeout(() => resolve('данные'), 1000);
});

promise
  .then((value) => console.log(value)) // 'данные'
  .catch((error) => console.error(error))
  .finally(() => console.log('готово'));
  • then — обработчик успеха (и опционально ошибки).
  • catch — обработчик ошибки, ловит reject из всей цепочки выше.
  • finally — выполняется в любом случае, не меняет значение.

Чем лучше колбэков

  • Плоские цепочки вместо «callback hell».
  • Единая обработка ошибок через catch.
  • Комбинаторы: Promise.all, race, allSettled, any.

Детали

  • Коллбэки then попадают в очередь микрозадач.
  • Возврат значения из then оборачивается в новый промис — цепочка продолжается.
  • throw внутри then эквивалентен reject.

Коротко для собеседования

Promise — обёртка над будущим результатом асинхронной операции с тремя состояниями. Даёт цепочки then/catch/finally и удобную обработку ошибок вместо вложенных колбэков.

Подробнее: learn.javascript.ru — Промисы, MDN — Promise

Другие вопросы раздела