Junior
Vysvetlite, čo je Promise.race a ako sa používa v JavaScript.
sobes.tech AI
Odpoveď od AI
Promise.race prijíma iterovateľný objekt sľubov a vracia nový sľub. Tento nový sľub sa vyrieši alebo zamietne hneď, ako sa vyrieši alebo zamietne prvý sľub v iterovateľnom objekte. Výsledkom nového sľubu bude výsledok alebo dôvod zamietnutia prvého dokončeného sľubu.
Používa sa na:
- Výber najrýchlejšej odpovede z viacerých asynchrónnych operácií.
- Implementáciu časových limitov pre asynchrónne operácie.
Príklad časového limitu:
// Funkcia, ktorá vytvorí sľub, ktorý sa zamietne po určitom čase
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout po ${ms}ms`));
}, ms);
});
}
// Asynchrónna operácia, ktorá môže byť pomalá
function fetchData() {
return new Promise(resolve => {
// Simulácia dlhého procesu
setTimeout(() => {
resolve('Dáta úspešne načítané');
}, 2000); // Predpokladáme, že táto operácia trvá 2 sekundy
});
}
// Použitie Promise.race na pridanie časového limitu k fetchData
Promise.race([
fetchData(), // Naša operácia
timeout(1000) // Časový limit 1 sekunda
])
.then(result => {
console.log(result); // Bude vykonané, ak fetchData skončí pred časovým limitom
})
.catch(error => {
console.error(error.message); // Bude vykonané, ak časový limit nastane ako prvý
});