Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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);