Sobes.tech
Junior

Mis on Promise.race?

sobes.tech AI

Vastus AI-lt

Promise.race — see meetod tagastab uue lubaduse. See uus lubadus lahendatakse või lükatakse tagasi sama väärtuse (või põhjuse) alusel, mis esimene sisendisse antud ja iteratiivne objekt (tavaliselt massiiv), mis on lõpetanud.

Tööpõhimõtted:

  1. Sissevõtt: Võtab vastu iteratiivse objekti (näiteks massiivi) lubadustega.
  2. Ootamine: Algab "võistlus" kõigi lubaduste vahel.
  3. Tulemus: Kui ükskõik neist lubadustest iteratiivses objektis lõpetab (kas lahendatakse või lükatakse tagasi), lõpeb Promise.race hetkega sama tulemustega.
  4. Ignoreerimine: Kõik teised hiljem lõpetavad lubaduste tulemused on täielikult ignoreeritud.

Kasutusnäide:

// Näide lubadusest, mis lahendatakse 1 sekundi pärast
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Esimene'), 1000));

// Näide lubadusest, mis lahendatakse 500 millisekundi pärast
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Teine'), 500));

// Näide lubadusest, mis lükatakse tagasi 300 millisekundi pärast
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Viga')), 300));

Promise.race([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // Väljund 'Viga'
  })
  .catch((error) => {
    console.error(error.message); // Käsitleb viga 'Viga'
  });

Selles näites lõpetab promise3 esimese (lükatud tagasi), seega lõpeb Promise.race veaga ja täidetakse .catch. Kui promise2 lõpetaks esimese (näiteks 10 ms), siis Promise.race lahendataks väärtusega ja täidetakse .then.

Tüüpilised kasutusstsenaariumid:

  • Asünkroonse operatsiooni ajapiirangu määramine.
  • Kiireima andmeallika tulemuse saamine mitme võimaliku allika hulgast.
  • Konkurentsivõimeliste asünkroonsete operatsioonide tühistamine.