Junior
Explica ce este Promise.race și cum este utilizat în JavaScript.
sobes.tech AI
Răspuns de la AI
Promise.race acceptă un obiect iterabil de promisiuni și returnează o nouă promisiune. Această nouă promisiune se rezolvă sau se respinge de îndată ce prima promisiune din obiectul iterabil este rezolvată sau respinsă. Rezultatul noii promisiuni va fi rezultatul sau motivul respingerii primei promisiuni finalizate.
Este utilizat pentru:
- Alegerea răspunsului cel mai rapid dintre mai multe operații asincrone.
- Implementarea timeout-urilor pentru operații asincrone.
Exemplu de timeout:
// Funcție care creează o promisiune care se respinge după un anumit timp
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout după ${ms}ms`));
}, ms);
});
}
// Operație asincronă care poate fi lentă
function fetchData() {
return new Promise(resolve => {
// Simulare a unei operații lungi
setTimeout(() => {
resolve('Datele au fost preluate cu succes');
}, 2000); // Presupunem că această operație durează 2 secunde
});
}
// Utilizarea Promise.race pentru a adăuga un timeout la fetchData
Promise.race([
fetchData(), // Operația noastră
timeout(1000) // Timeout de 1 secundă
])
.then(result => {
console.log(result); // Se va executa dacă fetchData se termină înainte de timeout
})
.catch(error => {
console.error(error.message); // Se va executa dacă timeout are loc primul
});