Sobes.tech
Junior

Izskaidrojiet, kas ir Promise.race un kā tas tiek izmantots JavaScript.

sobes.tech AI

Atbilde no AI

Promise.race pieņem iterējamu solījumu objektu un atgriež jaunu solījumu. Šis jauns solījums tiek izpildīts vai noraidīts, tiklīdz pirmais solījums iterējamo objektu tiek izpildīts vai noraidīts. Jaunā solījuma rezultāts būs pirmajā pabeigtajā solījumā iegūtais rezultāts vai iemesls.

Izmanto:

  • Izvēlēties visstraujāko atbildi no vairākiem asenhroniskajiem procesiem.
  • Ieviest laika ierobežojumus asenhroniskajiem procesiem.

Piemērs ar laika ierobežojumu:

// Funkcija, kas izveido solījumu, kas tiek noraidīts pēc noteikta laika
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Asenhroniskais process, kas var būt lēns
function fetchData() {
  return new Promise(resolve => {
    // Ilga procesa simulācija
    setTimeout(() => {
      resolve('Dati veiksmīgi saņemti');
    }, 2000); // Pieņemam, ka šis process ilgst 2 sekundes
  });
}

// Izmantojot Promise.race, lai pievienotu laika ierobežojumu fetchData
Promise.race([
  fetchData(),  // Mūsu process
  timeout(1000) // 1 sekundes laika ierobežojums
])
.then(result => {
  console.log(result); // Tiks izpildīts, ja fetchData pabeigsies pirms laika ierobežojuma
})
.catch(error => {
  console.error(error.message); // Tiks izpildīts, ja pirmais notikums būs laika ierobežojums
});