Junior
Spiega cos'è Promise.race e come viene utilizzato in JavaScript.
sobes.tech AI
Risposta dell'AI
Promise.race accetta un oggetto iterabile di promesse e restituisce una nuova promessa. Questa nuova promessa si risolve o si rifiuta non appena la prima promessa nell'oggetto iterabile si risolve o si rifiuta. Il risultato della nuova promessa sarà il risultato o la ragione del rifiuto della prima promessa completata.
Utilizzato per:
- Scegliere la risposta più rapida tra più operazioni asincrone.
- Implementare timeout per operazioni asincrone.
Esempio di timeout:
// Funzione che crea una promessa che si rifiuta dopo un certo tempo
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Operazione asincrona che può essere lenta
function fetchData() {
return new Promise(resolve => {
// Simulazione di un'operazione lunga
setTimeout(() => {
resolve('Dati recuperati con successo');
}, 2000); // Supponiamo che questa operazione duri 2 secondi
});
}
// Uso di Promise.race per aggiungere un timeout a fetchData
Promise.race([
fetchData(), // La nostra operazione
timeout(1000) // Timeout di 1 secondo
])
.then(result => {
console.log(result); // Si eseguirà se fetchData termina prima del timeout
})
.catch(error => {
console.error(error.message); // Si eseguirà se il timeout si verifica per primo
});