Sobes.tech
Назад к вопросам
Middle+
2

Расскажи про Promise: статусы, статические методы (all, allSettled, any, race).

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Promise — это объект в JavaScript, представляющий результат асинхронной операции, который может быть доступен сейчас, позже или никогда.

Статусы Promise:

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

Статические методы Promise:

  • Promise.all(iterable) — принимает массив (или другой итерируемый объект) промисов и возвращает новый промис, который:

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

  • Promise.any(iterable) — возвращает промис, который выполнится, как только любой из промисов выполнится успешно. Если все промисы отклонены, возвращает AggregateError.

  • Promise.race(iterable) — возвращает промис, который выполнится или отклонится, как только первый промис из массива выполнится или отклонится.

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

const p1 = Promise.resolve(1);
const p2 = Promise.resolve(2);
const p3 = Promise.resolve(3);

Promise.all([p1, p2, p3])
  .then(values => console.log(values)) // [1, 2, 3]
  .catch(error => console.error(error));