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:
- Sissevõtt: Võtab vastu iteratiivse objekti (näiteks massiivi) lubadustega.
- Ootamine: Algab "võistlus" kõigi lubaduste vahel.
- Tulemus: Kui ükskõik neist lubadustest iteratiivses objektis lõpetab (kas lahendatakse või lükatakse tagasi), lõpeb
Promise.racehetkega sama tulemustega. - 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.