Junior — Middle
Aký je rozdiel medzi funkciami Promise.all a Promise.any pri spracovaní sľubov?
sobes.tech AI
Odpoveď od AI
Promise.all prijíma pole sľubov a vracia nový sľub, ktorý:
- sa vyrieši, keď všetky sľuby v poli úspešne dokončia, vracajúc pole výsledkov v rovnakom poradí;
- je zamietnutý, ak je aspoň jeden zo sľubov zamietnutý, okamžite s chybou tohto sľubu.
Promise.any prijíma pole sľubov a vracia sľub, ktorý:
- sa vyrieši, akonáhle ktorékoľvek zo sľubov úspešne dokončí, vracajúc výsledok tohto sľubu;
- je zamietnutý, ak sú všetky sľuby zamietnuté, vracajúc AggregateError s chybami všetkých sľubov.
Príklad:
const p1 = Promise.reject('Chyba 1');
const p2 = Promise.resolve('Úspech 2');
const p3 = Promise.resolve('Úspech 3');
Promise.all([p1, p2, p3])
.then(console.log) // nebude volané
.catch(console.error); // vypíše 'Chyba 1'
Promise.any([p1, p2, p3])
.then(console.log) // vypíše 'Úspech 2'
.catch(console.error);