JavaScript Promise.race() metóda

Javascript Promise Race Metoda



Metóda Promise.race() je vstavaná metóda JavaScriptu, ktorá berie opakovateľné sľuby ako argument a vracia prvý sľub, ktorý je vyriešený alebo zamietnutý. Metóda Promise.race() buď vráti hodnotu plnenia alebo dôvod odmietnutia. Iterovateľné objekty sú objekty, cez ktoré je možné prechádzať, ako sú polia, reťazce a mapy.

Čo sú to vlastne sľuby?

Asynchrónny kód sa dá vysporiadať so sľubmi. Ako parameter berú funkciu známu ako exekútor. Po vytvorení prísľubu exekútor automaticky beží asynchrónne a vráti hodnotu v prípade, že je splnený, inak vráti dôvod odmietnutia:

nech príklad_sľub = newPromise ( ( vyriešiť, odmietnuť ) => {
vyriešiť ( 'Sľub bol vyriešený' ) ;
} ) ;

example_promise. potom ( r => konzoly. log ( r ) ) ;







Asynchrónny charakter sľubov:



nech príklad_sľub = newPromise ( ( vyriešiť, odmietnuť ) => {
vyriešiť ( 'Sľub bol vyriešený' ) ;
} ) ;

example_promise. potom ( r => konzoly. log ( r ) ) ;
konzoly. log ( '1,2,3...' ) ;



Ako používať metódu Promise.race()?

Odovzdajte opakovateľnosť prísľubov metóde Promise.race() a získajte jej návratovú hodnotu v premennej:





nech prom1 = newPromise ( ( vyriešiť, odmietnuť ) => {
setTimeout ( ( ) => vyriešiť ( 'Sľub bol vyriešený' ) , 500 ) ;
} ) ;

nech prom2 = newPromise ( ( vyriešiť, odmietnuť ) => {
setTimeout ( ( ) => odmietnuť ( 'Sľub sa nepodarilo vyriešiť' ) , 250 ) ;
} ) ;

nechať tepl = Sľub. rasa ( [ prom1, prom2 ] ) ;

tepl. chytiť ( dôvod => konzoly. log ( dôvod ) ) ;

V tomto príklade sme mali dva sľuby. Prvý prísľub bol vyriešený po 500 ms a druhý prísľub bol zamietnutý hneď po 250 sekundách. Keďže druhý prísľub bol prvý, ktorý bol buď vyriešený alebo odmietnutý, bol vrátený metódou Promise.race().



Ak je argument odovzdaný metóde Promise.race() prázdny iterovateľný, metóda vráti navždy čakajúci sľub:

nechať tepl = Sľub. rasa ( [ ] ) ;

konzoly. log ( tepl ) ;

Ak má argument iterable nejaké neprisľúbené hodnoty alebo sľuby, ktoré už boli splnené alebo zamietnuté, metóda sa uspokojí s prvou hodnotou v poli:

nech p1 = newPromise ( ( vyriešiť, odmietnuť ) => {
vyriešiť ( 'P1 bol vyriešený' ) ;
} ) ;

nech p2 = newPromise ( ( vyriešiť, odmietnuť ) => {
vyriešiť ( 'P2 bola vyriešená' ) ;
} ) ;

nechať tepl = Sľub. rasa ( [ p1,p2 ] ) ;
tepl. potom ( hodnotu => konzoly. log ( hodnotu ) ) ;

Metóda Promise.race() kontroluje vyriešené aj odmietnuté sľuby. Táto metóda má aj inú alternatívu, ktorou je metóda Promise.any(), ktorú možno použiť len na kontrolu splnených sľubov.

Záver

Metóda Promise.race() sa používa na získanie prvého sľubu, ktorý je buď splnený alebo odmietnutý z iterovateľnej série sľubov. Sľub, ktorý je splnený alebo odmietnutý najskôr, je návratová hodnota Promise.race(). Zápis poskytol hĺbkový prehľad o metóde Promise.race().