JavaScript Promise.race() metodas

Javascript Promise Race Metodas



Promise.race() metodas yra integruotas JavaScript metodas, kuris kaip argumentą priima pažadų kartojimą ir grąžina pirmąjį pažadą, kuris yra įvykdytas arba atmestas. Promise.race() metodas grąžins įvykdymo vertę arba atmetimo priežastį. Pakartojamieji objektai yra objektai, kuriuos galima perjungti, pavyzdžiui, masyvai, eilutės ir žemėlapiai.

Kas vis dėlto yra pažadai?

Asinchroninis kodas gali būti tvarkomas su pažadais. Jie naudoja funkciją, žinomą kaip vykdytojas, kaip parametrą. Sukūrus pažadą, vykdytojas automatiškai paleidžiamas asinchroniškai ir grąžina reikšmę tuo atveju, jei jis įvykdomas, kitu atveju grąžina atmetimo priežastį:

tegul example_promise = naujas Pažadas ( ( išspręsti, atmesti ) => {
išspręsti ( „Pažadas įvykdytas“ ) ;
} ) ;

pavyzdys_pažadas. tada ( r => konsolė. žurnalas ( r ) ) ;







Asinchroninis pažadų pobūdis:



tegul example_promise = naujas Pažadas ( ( išspręsti, atmesti ) => {
išspręsti ( „Pažadas įvykdytas“ ) ;
} ) ;

pavyzdys_pažadas. tada ( r => konsolė. žurnalas ( r ) ) ;
konsolė. žurnalas ( '1,2,3...' ) ;



Kaip naudoti Promise.race() metodą?

Perduokite pažadų iteraciją Promise.race() metodui ir gaukite jo grąžinamąją reikšmę kintamajame:





tegul prom1 = naujas Pažadas ( ( išspręsti, atmesti ) => {
setTimeout ( ( ) => išspręsti ( „Pažadas įvykdytas“ ) , 500 ) ;
} ) ;

tegul prom2 = naujas Pažadas ( ( išspręsti, atmesti ) => {
setTimeout ( ( ) => atmesti ( „Pažadas negalėjo būti įvykdytas“ ) , 250 ) ;
} ) ;

leisti temp = Pažadas. lenktynės ( [ prom1, prom2 ] ) ;

temp. sugauti ( priežastis => konsolė. žurnalas ( priežastis ) ) ;

Šiame pavyzdyje turėjome du pažadus. Pirmasis pažadas buvo įvykdytas po 500 ms, o antrasis pažadas buvo atmestas tik po 250 sekundžių. Kadangi antrasis pažadas buvo pirmasis, kuris buvo išspręstas arba atmestas, jis buvo grąžintas Promise.race() metodu.



Jei Promise.race() metodui perduotas argumentas yra tuščias kartojamas, metodas grąžins amžinai laukiantį pažadą:

leisti temp = Pažadas. lenktynės ( [ ] ) ;

konsolė. žurnalas ( temp ) ;

Jei pakartojamoje argumento dalyje yra nežadančių verčių arba pažadų, kurie jau buvo įvykdyti arba atmesti, metodas atsiskaitys su pirmąja masyvo verte:

tegul p1 = naujas Pažadas ( ( išspręsti, atmesti ) => {
išspręsti ( 'P1 buvo išspręstas' ) ;
} ) ;

tegul p2 = naujas Pažadas ( ( išspręsti, atmesti ) => {
išspręsti ( 'P2 buvo išspręstas' ) ;
} ) ;

leisti temp = Pažadas. lenktynės ( [ p1, p2 ] ) ;
temp. tada ( vertė => konsolė. žurnalas ( vertė ) ) ;

Promise.race() metodo patikrinimas ir įvykdytiems, ir atmestiems pažadams. Šis metodas taip pat turi kitą alternatyvą, tai yra Promise.any() metodas, kurį galima naudoti norint tiesiog patikrinti, ar pažadai yra įvykdyti.

Išvada

Promise.race() metodas naudojamas norint gauti pirmąjį pažadą, kuris yra įvykdytas arba atmetamas iš kartotinės pažadų serijos. Anksčiausiai įvykdytas arba atmestas pažadas yra Promise.race() grąžinamoji vertė. Rašymas suteikė nuodugnią įžvalgą apie Promise.race() metodą.