Metoda JavaScript Promise.race().

Metoda Javascript Promise Race



Metoda Promise.race() este o metodă încorporată de JavaScript care ia un iterabil de promisiuni ca argument și returnează prima promisiune care este rezolvată sau respinsă. Metoda Promise.race() va returna fie valoarea de îndeplinire, fie motivul respingerii. Iterabilele sunt obiecte care pot fi parcurse în buclă, cum ar fi Arrays, Strings și Maps.

Oricum, ce sunt promisiunile?

Codul asincron poate fi tratat cu promisiuni. Aceștia iau ca parametru o funcție cunoscută sub numele de executor. Când este creată o promisiune, executorul rulează automat asincron și returnează o valoare în cazul în care aceasta este îndeplinită, altfel returnează motivul respingerii:

lasă example_promise = nouPromisiune ( ( rezolva, respinge ) => {
rezolva ( „Promisiunea a fost rezolvată” ) ;
} ) ;

exemplu_promisiune. apoi ( r => consolă. Buturuga ( r ) ) ;







Natura asincronă a promisiunilor:



lasă example_promise = nouPromisiune ( ( rezolva, respinge ) => {
rezolva ( „Promisiunea a fost rezolvată” ) ;
} ) ;

exemplu_promisiune. apoi ( r => consolă. Buturuga ( r ) ) ;
consolă. Buturuga ( '1,2,3...' ) ;



Cum se utilizează metoda Promise.race()?

Transmiteți un iterabil de promisiuni la metoda Promise.race() și obțineți valoarea returnată în variabilă:





lasă balul1 = nou Promisiune ( ( rezolva, respinge ) => {
setTimeout ( ( ) => rezolva ( „Promisiunea a fost rezolvată” ) , 500 ) ;
} ) ;

lasa balul2 = nou Promisiune ( ( rezolva, respinge ) => {
setTimeout ( ( ) => respinge ( „Promisiunea nu a putut fi rezolvată” ) , 250 ) ;
} ) ;

lasa temp = Promisiune. rasă ( [ balul1, balul2 ] ) ;

temp. captură ( motiv => consolă. Buturuga ( motiv ) ) ;

În acest exemplu, am avut două promisiuni. Prima promisiune a fost rezolvată după 500 ms, iar a doua promisiune a fost respinsă imediat după 250 de secunde. Deoarece a doua promisiune a fost prima care a fost fie rezolvată, fie respinsă, a fost returnată prin metoda Promise.race().



Dacă argumentul transmis metodei Promise.race() este un iterabil gol, atunci metoda va returna o promisiune în așteptare:

lasa temp = Promisiune. rasă ( [ ] ) ;

consolă. Buturuga ( temp ) ;

Dacă argumentul iterabil are valori non-promis sau promisiuni care au fost deja îndeplinite sau respinse, atunci metoda se va stabili pentru prima valoare din matrice:

fie p1 = nouPromisiune ( ( rezolva, respinge ) => {
rezolva ( „P1 a fost rezolvat” ) ;
} ) ;

fie p2 = nouPromisiune ( ( rezolva, respinge ) => {
rezolva ( „P2 a fost rezolvat” ) ;
} ) ;

lasa temp = Promisiune. rasă ( [ p1,p2 ] ) ;
temp. apoi ( valoare => consolă. Buturuga ( valoare ) ) ;

Verificarea metodei Promise.race() atât pentru promisiunile rezolvate, cât și pentru cele respinse. Această metodă are, de asemenea, o altă alternativă, care este metoda Promise.any(), care poate fi folosită doar pentru a verifica promisiunile îndeplinite.

Concluzie

Metoda Promise.race() este folosită pentru a obține prima promisiune care este fie îndeplinită, fie respinsă dintr-un iterabil de promisiuni. Promisiunea care este îndeplinită sau respinsă cel mai devreme este valoarea de returnare a lui Promise.race(). Scrisul a oferit o perspectivă aprofundată asupra metodei Promise.race().