Sobes.tech
Junior — Middle

Mi a különbség a Promise.all és a Promise.any funkciók között a promise-ok kezelésében?

sobes.tech MI

Válasz az MI-től

A Promise.all egy ígéret tömbjét fogadja, és egy újat ad vissza, amely:

  • akkor oldódik meg, amikor a tömb összes ígérete sikeresen befejeződik, és ugyanabban a sorrendben eredményeket ad vissza;
  • elutasításra kerül, ha legalább egy ígéret elutasításra kerül, azonnal az adott ígéret hibájával.

A Promise.any egy ígéret tömbjét fogadja, és egy olyan ígéretet ad vissza, amely:

  • akkor oldódik meg, amint bármelyik ígéret sikeresen befejeződik, és az eredményt adja vissza;
  • elutasításra kerül, ha minden ígéret elutasításra kerül, és egy AggregateError-t ad vissza, amely az összes ígéret hibáit tartalmazza.

Példa:

const p1 = Promise.reject('Hiba 1');
const p2 = Promise.resolve('Siker 2');
const p3 = Promise.resolve('Siker 3');

Promise.all([p1, p2, p3])
  .then(console.log) // nem fog meghívódni
  .catch(console.error); // kiírja 'Hiba 1'

Promise.any([p1, p2, p3])
  .then(console.log) // kiírja 'Siker 2'
  .catch(console.error);