> Какие состояния бывают у промисов и какие методы у них есть в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Cyber Interactive, Garage Eight, ЛитРес, Aston, GoInvest, Сбер

Стек: JavaScript

> Пример ответа

У промисов (Promise) в JavaScript есть три состояния:

  1. Pending (ожидание) - начальное состояние, промис ещё не выполнен и не отклонён.

  2. Fulfilled (выполнен) - операция завершена успешно, промис имеет значение (value).

  3. Rejected (отклонён) - операция завершилась ошибкой, промис имеет причину (reason).

После перехода в fulfilled или rejected состояние промис становится "settled" (завершённым) и не может изменить его.

Основные методы промисов:

  • then(onFulfilled, onRejected) - возвращает новый промис, выполняет колбэк при успехе или ошибке.

  • catch(onRejected) - обрабатывает только отклонение, эквивалентно then(null, onRejected).

  • finally(onFinally) - выполняется в любом случае (успех или ошибка), не получает значение/причину, возвращает промис.

  • Promise.resolve(value) - возвращает промис, выполненный с переданным значением.

  • Promise.reject(reason) - возвращает промис, отклонённый с причиной.

  • Promise.all(iterable) - ждёт выполнения всех промисов, возвращает массив результатов; если любой отклонён - сразу отклоняется.

  • Promise.allSettled(iterable) - ждёт завершения всех промисов, возвращает массив объектов с состоянием и значением/причиной.

  • Promise.race(iterable) - возвращает результат первого завершённого промиса (успех или ошибка).

  • Promise.any(iterable) - возвращает первый успешно выполненный промис; если все отклонены - отклоняется с AggregateError.

Пример использования:

JAVASCRIPT
const promise = new Promise((resolve, reject) => {
// pending
setTimeout(() => resolve('Готово'), 1000);
});
promise
.then(value => console.log(value)) // fulfilled
.catch(err => console.error(err)) // rejected
.finally(() => console.log('Завершено'));

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью