Junior
Wat is Promise.race?
sobes.tech AI
Antwoord van AI
Promise.race — is een methode die een nieuwe belofte retourneert. Deze nieuwe belofte wordt opgelost of afgewezen met dezelfde waarde (of reden) als de eerste belofte uit het meegegeven iterabele object (meestal een array) dat is voltooid.
Werking principes:
- Invoer: Accepteert een iterabel object (bijvoorbeeld een array) van beloftes.
- Wachten: Begint een "wedstrijd" tussen alle beloftes.
- Resultaat: Zodra een van de beloftes in het iterabele object voltooid is (opgelost of afgewezen), eindigt
Promise.raceonmiddellijk met hetzelfde resultaat. - Negeer: De resultaten van alle andere beloftes die later worden voltooid, worden volledig genegeerd.
Voorbeeld van gebruik:
// Voorbeeld van een belofte die wordt opgelost na 1 seconde
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Eerste'), 1000));
// Voorbeeld van een belofte die wordt opgelost na 500 milliseconden
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Tweede'), 500));
// Voorbeeld van een belofte die wordt afgewezen na 300 milliseconden
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Fout')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Zal 'Fout' tonen
})
.catch((error) => {
console.error(error.message); // Behandelt de fout 'Fout'
});
In dit voorbeeld wordt promise3 als eerste voltooid (afgewezen), dus Promise.race eindigt met een fout, en de .catch-blok wordt uitgevoerd. Als promise2 als eerste was voltooid (bijvoorbeeld in 10 ms), zou Promise.race worden opgelost met de waarde 'Tweede', en de .then-blok zou worden uitgevoerd.
Typische gebruiksscenario's:
- Implementatie van een timeout voor een asynchrone operatie.
- Het verkrijgen van het resultaat van de snelste gegevensbron onder meerdere mogelijke.
- Annuleren van concurrerende asynchrone operaties.