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);