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().