Sobes.tech
Junior

Explique ce qu'est Promise.race et comment il est utilisé en JavaScript.

sobes.tech IA

Réponse de l'IA

Promise.race accepte un objet itérable de promesses et retourne une nouvelle promesse. Cette nouvelle promesse est résolue ou rejetée dès que la première promesse dans l'objet itérable est résolue ou rejetée. Le résultat de la nouvelle promesse sera le résultat ou la raison du rejet de la première promesse terminée.

Utilisé pour :

  • Choisir la réponse la plus rapide parmi plusieurs opérations asynchrones.
  • Implémenter des délais d'attente pour des opérations asynchrones.

Exemple de délai d'attente :

// Fonction qui crée une promesse rejetée après un certain temps
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Opération asynchrone qui peut être lente
function fetchData() {
  return new Promise(resolve => {
    // Simulation d'une opération longue
    setTimeout(() => {
      resolve('Données récupérées avec succès');
    }, 2000); // Supposons que cette opération prend 2 secondes
  });
}

// Utilisation de Promise.race pour ajouter un délai d'attente à fetchData
Promise.race([
  fetchData(),  // Notre opération
  timeout(1000) // Délai d'attente de 1 seconde
])
.then(result => {
  console.log(result); // S'exécutera si fetchData se termine avant le délai
})
.catch(error => {
  console.error(error.message); // S'exécutera si le délai expire en premier
});