Sobes.tech
Junior

Objasnite šta je Promise.race i kako se koristi u JavaScript-u.

sobes.tech АИ

Одговор од АИ

Promise.race prihvata iterabilni objekat od obećanja i vraća novo obećanje. Ovo novo obećanje se rešava ili odbacuje čim se prvo obećanje u iterabilnom objektu reši ili odbaci. Rezultat novog obećanja biće rezultat ili razlog odbacivanja prvog završenog obećanja.

Koristi se za:

  • Odabir najbržeg odgovora od više asinhronih operacija.
  • Implementaciju vremenskih ograničenja za asinhrone operacije.

Primer vremenskog ograničenja:

// Funkcija koja kreira obećanje koje se odbacuje nakon određenog vremena
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Asinhrona operacija koja može biti spora
function fetchData() {
  return new Promise(resolve => {
    // Simulacija duge operacije
    setTimeout(() => {
      resolve('Podaci uspešno preuzeti');
    }, 2000); // Pretpostavimo da ova operacija traje 2 sekunde
  });
}

// Korišćenje Promise.race za dodavanje vremenskog ograničenja fetchData
Promise.race([
  fetchData(),  // Naša operacija
  timeout(1000) // Vremensko ograničenje od 1 sekunde
])
.then(result => {
  console.log(result); // Izvršiće se ako fetchData završi pre vremena
})
.catch(error => {
  console.error(error.message); // Izvršiće se ako prvi dođe timeout
});