Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 3279|Vastaus: 2

[Muut] RxJS firstValueFrom- ja lastValueFrom-eroista

[Kopioi linkki]
Julkaistu 2024-8-6 klo 11:19:02 | | | |
Vaatimukset: Projektin täytyy muuntaa Observablesit Promisesiksi ja odottaa niiden valmistumista, ja kun käytetään toPromise()-metodia Angular-projektissa, vihje on poistettu käytöstä, minkä jälkeen suositellaan käyttämään firstValueFrom- tai lastValueFrom-metodeja.



Miksi hylätä toPromise()-menetelmä?

Koska toPromise()-metodin nimi ei koskaan kerro, minkä emittoiman arvon lupaus ratkaisee, koska havaittavat tiedostot voivat tuottaa useita arvoja ajan kuluessa. Kun muunnat lupaukseksi, saatat haluta valita, haluatko valita ensimmäisen saapuvan arvon vai viimeisen arvon. Ratkaistaksemme kaikki nämä ongelmat päätimme poistaa toPromise():n käytöstä ja ottaa käyttöön kaksi uutta apufunktiota lupauksiksi muuntamiseen.

Yksinkertaisesti ymmärräHavaittavat tuotteet tuottavat useita arvojaSittenLupaukset johtavat vain yhteen arvoonSitten jotkut käyttäjät haluavat käyttää ensimmäistä arvoa, toiset viimeistä arvoa, jolloin firstValueFrom ja lastValueFrom ilmestyvät. (Huomautus: toPromise() on viimeinen arvo, jolla saadaan havaittavat arvot

firstValueFrom-esimerkki

Saatat haluta saada ensimmäisen arvon heti kun se saapuu odottamatta Observablen valmistumista, jotta voit käyttää firstValueFromia. firstValueFrom ratkaisee lupauksen ensimmäisellä Observablen lähettämällä arvolla ja peruuttaa tilauksen välittömästi resurssin säilyttämiseksi. Jos Observable valmistuu ilman arvoa, firstValueFrom hylätään myös EmptyErrorilla.



lastValueEsimerkistä

lastValueFrom on lähes identtinen toPromise():n kanssa, mikä tarkoittaa, että se jäsentää viimeisimmän arvon mukaan, kun Observable valmistuu, mutta käyttäytyy eri tavalla, kun Observable valmistuu ilman yhtäkään arvoa. Kun Observable valmistuu ilman laukaisua, toPromise() ratkeaa onnistuneesti määrittelemättömäksi (jolloin palautustyyppi muuttuu), ja lastValueFrom hylätään EmptyErrorina. Siksi lastValueFrom-palautustyyppi on Promise<T>, aivan kuten toPromise() RxJS 6:ssa.





Esimerkki jäsentämisestä

RxJS:ssä interval(1000) tuottaa havaittavan jonon, joka lähettää lukujonon joka 1000 millisekunti (eli 1 sekunti), alkaen nollasta.

Seuraavaksi .pipe(take(10)) on operaattoriketju, joka rajoittaa Observablen lähettämien alkioiden määrää. Tässä take(10) tarkoittaa, että otetaan vain ensimmäisten 10 lähetetyn arvoa.

Selitetäänpä tämä ilmaus yksityiskohtaisesti:

interval(1000): Luo havaittava, joka lähettää luvun joka sekunti. Lukujono alkaa nollasta ja kasvaa yhdellä.

.pipe(take(10)): Käytä .pipe()-menetelmää yhdistääksesi useita operaattoreita. Tässä käytämme take(10)-operaattoria, joka rajoittaa Observablen lähettämään vain ensimmäiset 10 arvoa.

Testaa EmptyError-virheitä

Koodi on seuraava:


tai




Viittaus:Hyperlinkin kirjautuminen on näkyvissä.




Edellinen:MySQL-komentorivikyselytulokset palautuvat? kysymysmerkki
Seuraava:Angular 18 -sarja (kaksikymmentäkaksi) esittelee FontAwewe-ikonikirjaston
 Vuokraisäntä| Julkaistu 2024-8-6 klo 11:21:09 |
Jos käytät lastValueFrom tai firstValueFrom Angular HTTP:ssä, se on ekvivalentti, eroa ei ole, eli voit käyttää kumpaakin.
 Vuokraisäntä| Julkaistu 2024-10-16 21:44:52 |
Jos palautat of():n, saatat saada ei-alkioiden sekvenssissä -poikkeuksen, lastValueFrom ottaa nyt konfiguraatioparametrin toiseksi parametrikseen, ja voit määrittää oletusarvon, joka lähetetään, kun havaittava on tyhjä:

Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com