> Какие состояния бывают у промисов и какие методы у них есть в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Cyber Interactive, Garage Eight, ЛитРес, Aston, GoInvest, Сбер
Стек: JavaScript
> Пример ответа
У промисов (Promise) в JavaScript есть три состояния:
-
Pending (ожидание) - начальное состояние, промис ещё не выполнен и не отклонён.
-
Fulfilled (выполнен) - операция завершена успешно, промис имеет значение (value).
-
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.
Пример использования:
JAVASCRIPTconst promise = new Promise((resolve, reject) => {// pendingsetTimeout(() => resolve('Готово'), 1000);});promise.then(value => console.log(value)) // fulfilled.catch(err => console.error(err)) // rejected.finally(() => console.log('Завершено'));
> Похожие задачи по frontend
Как работает Promise.all и как реализовать аналог с обработкой reject в JavaScript
Что такое AbortController и метод abort в JavaScript
В чем отличие массивов от объектов в JavaScript
Как работает сборщик мусора в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью