Junior
Cos'è Promise.race?
sobes.tech AI
Risposta dell'AI
Promise.race — è un metodo che restituisce una nuova promessa. Questa nuova promessa si risolve o si rifiuta con lo stesso valore (o motivo) della prima promessa dell'oggetto iterabile passato (di solito un array) che si completa.
Principi di funzionamento:
- Ingresso: Accetta un oggetto iterabile (ad esempio, un array) di promesse.
- Attesa: Inizia una "competizione" tra tutte le promesse.
- Risultato: Non appena una qualsiasi delle promesse nell'oggetto iterabile si completa (risolta o rifiutata),
Promise.racesi conclude istantaneamente con lo stesso risultato. - Ignorare: I risultati di tutte le altre promesse che si completano successivamente vengono completamente ignorati.
Esempio di utilizzo:
// Esempio di una promessa che si risolve dopo 1 secondo
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Primo'), 1000));
// Esempio di una promessa che si risolve dopo 500 millisecondi
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Secondo'), 500));
// Esempio di una promessa che viene rifiutata dopo 300 millisecondi
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Errore')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Mostrerà 'Errore'
})
.catch((error) => {
console.error(error.message); // Gestisce l'errore 'Errore'
});
In questo esempio, promise3 si completa per primo (viene rifiutata), quindi Promise.race si conclude con un errore, e viene eseguito il blocco .catch. Se promise2 si fosse completata per prima (ad esempio, in 10 ms), allora Promise.race si sarebbe risolta con il valore 'Secondo', e si sarebbe eseguito il blocco .then.
Scenari di utilizzo tipici:
- Implementazione di un timeout per un'operazione asincrona.
- Ottenere il risultato dalla fonte di dati più veloce tra più possibili.
- Annullare operazioni asincrone concorrenti.