Sobes.tech
Junior

Vysvětlete, co je Promise.race a jak se používá v JavaScriptu.

sobes.tech AI

Odpověď od AI

Promise.race přijímá iterovatelný objekt slibů a vrací nový slib. Tento nový slib se vyřeší nebo zamítne, jakmile se první slib v iterovatelném objektu vyřeší nebo zamítne. Výsledkem nového slibu bude výsledek nebo důvod zamítnutí prvního dokončeného slibu.

Používá se pro:

  • Výběr nejrychlejší odpovědi z několika asynchronních operací.
  • Implementaci časových limitů pro asynchronní operace.

Příklad časového limitu:

// Funkce, která vytvoří slib, který se zamítne po určitém čase
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Asynchronní operace, která může být pomalá
function fetchData() {
  return new Promise(resolve => {
    // Simulace dlouhé operace
    setTimeout(() => {
      resolve('Data úspěšně načtena');
    }, 2000); // Předpokládejme, že tato operace trvá 2 sekundy
  });
}

// Použití Promise.race pro přidání časového limitu k fetchData
Promise.race([
  fetchData(),  // Naše operace
  timeout(1000) // Časový limit 1 sekunda
])
.then(result => {
  console.log(result); // Bude spuštěno, pokud fetchData skončí před časovým limitem
})
.catch(error => {
  console.error(error.message); // Bude spuštěno, pokud časový limit nastane jako první
});