Sobes.tech
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ý
});