Sobes.tech
Junior — Middle

Quelle est la différence entre les fonctions Promise.all et Promise.any lors du traitement des promesses?

sobes.tech IA

Réponse de l'IA

Promise.all prend un tableau de promesses et retourne une nouvelle promesse qui :

  • se résout lorsque toutes les promesses du tableau sont résolues avec succès, renvoyant un tableau de résultats dans le même ordre ;
  • se rejette si au moins une des promesses est rejetée, immédiatement avec l'erreur de cette promesse.

Promise.any prend un tableau de promesses et retourne une promesse qui :

  • se résout dès que l'une des promesses se résout avec succès, en renvoyant le résultat de cette promesse ;
  • se rejette si toutes les promesses sont rejetées, en renvoyant une erreur de type AggregateError contenant toutes les erreurs.

Exemple :

const p1 = Promise.reject('Erreur 1');
const p2 = Promise.resolve('Succès 2');
const p3 = Promise.resolve('Succès 3');

Promise.all([p1, p2, p3])
  .then(console.log) // ne sera pas appelé
  .catch(console.error); // affichera 'Erreur 1'

Promise.any([p1, p2, p3])
  .then(console.log) // affichera 'Succès 2'
  .catch(console.error);