Sobes.tech
Junior — Middle

Jaký je rozdíl mezi funkcemi Promise.all a Promise.any při zpracování slibů?

sobes.tech AI

Odpověď od AI

Promise.all přijímá pole slibů a vrací nový slib, který:

  • se vyřeší, když všechny sliby v poli úspěšně dokončí, vracející pole výsledků ve stejném pořadí;
  • je zamítnut, pokud je alespoň jedno z nich zamítnuto, okamžitě s chybou tohoto slibu.

Promise.any přijímá pole slibů a vrací slib, který:

  • se vyřeší, jakmile kterýkoli z nich úspěšně dokončí, vracející výsledek tohoto slibu;
  • je zamítnut, pokud jsou všechny zamítnuty, vracející AggregateError s chybami všech slibů.

Příklad:

const p1 = Promise.reject('Chyba 1');
const p2 = Promise.resolve('Úspěch 2');
const p3 = Promise.resolve('Úspěch 3');

Promise.all([p1, p2, p3])
  .then(console.log) // nebude voláno
  .catch(console.error); // vypíše 'Chyba 1'

Promise.any([p1, p2, p3])
  .then(console.log) // vypíše 'Úspěch 2'
  .catch(console.error);