Sobes.tech
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);