Sobes.tech
Junior

Qu'est-ce que Promise.race ?

sobes.tech IA

Réponse de l'IA

Promise.race — c'est une méthode qui retourne une nouvelle promesse. Cette nouvelle promesse est résolue ou rejetée avec la même valeur (ou raison) que la première promesse de l'objet itérable passé (généralement un tableau) qui se termine.

Principes de fonctionnement :

  1. Entrée : Accepte un objet itérable (par exemple, un tableau) de promesses.
  2. Attente : Commence une "compétition" entre toutes les promesses.
  3. Résultat : Dès qu'une seule des promesses dans l'objet itérable se termine (résolue ou rejetée), Promise.race se termine instantanément avec le même résultat.
  4. Ignorer : Les résultats de toutes les autres promesses qui se terminent plus tard sont complètement ignorés.

Exemple d'utilisation :

// Exemple d'une promesse qui se résout après 1 seconde
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Premier'), 1000));

// Exemple d'une promesse qui se résout après 500 millisecondes
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Deuxième'), 500));

// Exemple d'une promesse qui est rejetée après 300 millisecondes
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Erreur')), 300));

Promise.race([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // Affichera 'Erreur'
  })
  .catch((error) => {
    console.error(error.message); // Traite l'erreur 'Erreur'
  });

Dans cet exemple, promise3 se termine en premier (rejetée), donc Promise.race se termine avec une erreur, et le bloc .catch est exécuté. Si promise2 s'était terminé en premier (par exemple, en 10 ms), alors Promise.race aurait été résolue avec la valeur 'Deuxième', et le bloc .then aurait été exécuté.

Scénarios d'utilisation typiques :

  • Implémentation d'un délai d'attente pour une opération asynchrone.
  • Obtenir le résultat de la source de données la plus rapide parmi plusieurs possibles.
  • Annuler des opérations asynchrones concurrentes.