JavaScript Promise.race() -menetelmä

Javascript Promise Race Menetelma



Promise.race() -menetelmä on JavaScriptin sisäänrakennettu menetelmä, joka ottaa iteroitavan lupaukset argumenttina ja palauttaa ensimmäisen lupauksen, joka on ratkaistu tai hylätty. Promise.race()-menetelmä palauttaa joko täyttymisarvon tai hylkäämisen syyn. Iterables ovat objekteja, joita voidaan silmukalla, kuten taulukoita, merkkijonoja ja karttoja.

Mitä lupaukset muuten ovat?

Asynkronista koodia voidaan käsitellä lupauksin. Ne ottavat parametriksi funktion, joka tunnetaan nimellä suoritin. Kun lupaus on luotu, toimeenpanija suorittaa automaattisesti asynkronisesti ja palauttaa arvon, jos se täyttyy, muuten se palauttaa hylkäämisen syyn:

anna esimerkki_lupaus = uusi lupaus ( ( ratkaista, hylätä ) => {
ratkaista ( 'Lupaus on lunastettu' ) ;
} ) ;

esimerkki_lupaus. sitten ( r => konsoli. Hirsi ( r ) ) ;







Lupausten asynkroninen luonne:



anna esimerkki_lupaus = uusi lupaus ( ( ratkaista, hylätä ) => {
ratkaista ( 'Lupaus on lunastettu' ) ;
} ) ;

esimerkki_lupaus. sitten ( r => konsoli. Hirsi ( r ) ) ;
konsoli. Hirsi ( '1,2,3...' ) ;



Miten Promise.race() -menetelmää käytetään?

Välitä iterable lupauksista menetelmälle Promise.race() ja hanki sen palautusarvo muuttujassa:





anna prom1 = uusi lupaus ( ( ratkaista, hylätä ) => {
setTimeout ( ( ) => ratkaista ( 'Lupaus on lunastettu' ) , 500 ) ;
} ) ;

anna prom2 = uusi lupaus ( ( ratkaista, hylätä ) => {
setTimeout ( ( ) => hylätä ( 'Lupausta ei voitu lunastaa' ) , 250 ) ;
} ) ;

anna lämpötila = Lupaus. rotu ( [ prom1, prom2 ] ) ;

temp. ottaa kiinni ( syy => konsoli. Hirsi ( syy ) ) ;

Tässä esimerkissä meillä oli kaksi lupausta. Ensimmäinen lupaus ratkesi 500 ms:n jälkeen ja toinen lupaus hylättiin heti 250 sekunnin kuluttua. Koska toinen lupaus oli ensimmäinen, joka joko ratkesi tai hylättiin, se palautettiin Promise.race() -menetelmällä.



Jos Promise.race()-metodille välitetty argumentti on tyhjä iteroitava, menetelmä palauttaa ikuisesti odottavan lupauksen:

anna lämpötila = Lupaus. rotu ( [ ] ) ;

konsoli. Hirsi ( temp ) ;

Jos argumentin iteroitavalla on ei-lupausarvoja tai lupauksia, jotka on jo täytetty tai hylätty, menetelmä asettuu taulukon ensimmäiseen arvoon:

anna p1 = uusi lupaus ( ( ratkaista, hylätä ) => {
ratkaista ( 'P1 on ratkaistu' ) ;
} ) ;

anna p2 = uusi lupaus ( ( ratkaista, hylätä ) => {
ratkaista ( 'P2 on ratkaistu' ) ;
} ) ;

anna lämpötila = Lupaus. rotu ( [ p1, p2 ] ) ;
temp. sitten ( arvo => konsoli. Hirsi ( arvo ) ) ;

Promise.race() -menetelmä tarkistaa sekä ratkaistut että hylätyt lupaukset. Tällä menetelmällä on myös toinen vaihtoehto, joka on Promise.any()-menetelmä, jota voidaan käyttää vain tarkistamaan lupausten täyttyminen.

Johtopäätös

Promise.race() -menetelmää käytetään ensimmäisen lupauksen saamiseksi, joka joko täytetään tai hylätään lupausten iteraatiosta. Lupaus, joka täyttyy tai hylätään aikaisintaan, on Promise.race()-arvon palautusarvo. Kirjoitus tarjosi syvällisen käsityksen Promise.race()-menetelmästä.