Sobes.tech
Back to questions
Junior — Middle
93

В чем различие между функциями Promise.all и Promise.any при обработке промисов?

Answer from AI

sobes.tech AI

Promise.all принимает массив промисов и возвращает новый промис, который:

  • резолвится, когда все промисы из массива успешно завершены, возвращая массив результатов в том же порядке;
  • реджектится, если хотя бы один из промисов отклонён, сразу же с ошибкой этого промиса.

Promise.any принимает массив промисов и возвращает промис, который:

  • резолвится, как только любой один из промисов успешно завершится, возвращая результат этого промиса;
  • реджектится, если все промисы отклонены, возвращая AggregateError с ошибками всех промисов.

Пример:

const p1 = Promise.reject('Ошибка 1');
const p2 = Promise.resolve('Успех 2');
const p3 = Promise.resolve('Успех 3');

Promise.all([p1, p2, p3])
  .then(console.log) // не вызовется
  .catch(console.error); // выведет 'Ошибка 1'

Promise.any([p1, p2, p3])
  .then(console.log) // выведет 'Успех 2'
  .catch(console.error);