Sobes.tech
Junior

Leg uit wat Promise.race is en hoe het wordt gebruikt in JavaScript.

sobes.tech AI

Antwoord van AI

Promise.race accepteert een iterabel object van beloftes en retourneert een nieuwe belofte. Deze nieuwe belofte wordt opgelost of afgewezen zodra de eerste belofte in het iterabele object wordt opgelost of afgewezen. Het resultaat van de nieuwe belofte is het resultaat of de reden van afwijzing van de eerste voltooide belofte.

Gebruikt voor:

  • Het kiezen van het snelste antwoord uit meerdere asynchrone operaties.
  • Het implementeren van time-outs voor asynchrone operaties.

Voorbeeld van een time-out:

// Functie die een belofte maakt die wordt afgewezen na een bepaalde tijd
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Asynchrone operatie die traag kan zijn
function fetchData() {
  return new Promise(resolve => {
    // Simulatie van een langdurige operatie
    setTimeout(() => {
      resolve('Data succesvol opgehaald');
    }, 2000); // Stel dat deze operatie 2 seconden duurt
  });
}

// Gebruik van Promise.race om een time-out toe te voegen aan fetchData
Promise.race([
  fetchData(),  // Onze operatie
  timeout(1000) // Time-out van 1 seconde
])
.then(result => {
  console.log(result); // Wordt uitgevoerd als fetchData vóór de time-out eindigt
})
.catch(error => {
  console.error(error.message); // Wordt uitgevoerd als de time-out als eerste plaatsvindt
});