See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 3279|Vastuse: 2

[Muu] RxJS firstValueFrom ja lastValueFrom erinevuse kohta

[Kopeeri link]
Postitatud 2024-8-6 11:19:02 | | | |
Nõuded: Projekt peab teisendama Observables lubadusteks ja ootama valmimist, ning kui kasutatakse toPromise() meetodit Angular projektis, on vihje aegunud ning seejärel soovitatakse kasutada staatilisi meetodeid firstValueFrom või lastValueFrom.



Miks tühistada toPromise() meetod?

Sest toPromise() meetodi nimi ei näita kunagi, millist emissiooniväärtust Promise lahendab, sest Observables suudab aja jooksul toota mitut väärtust. Lubaduse konverteerimisel võiksite valida, kas valida esimene saabuv väärtus või viimane väärtus. Kõigi nende probleemide lahendamiseks otsustasime loobuda toPromise() funktsioonist ja tuua sisse kaks uut abifunktsiooni lubadusteks konverteerimiseks.

Lihtsalt mõistaVaadeldavad väärtused annavad mitu väärtustJa siisLubadused annavad ainult ühe väärtuseSiis soovivad mõned kasutajad kasutada esimest väärtust ja mõned viimast väärtust, nii et ilmuvad firstValueFrom ja lastValueFrom. (Märkus: toPromise() on viimane väärtus, mis saab vaadeldavad andmed

firstValueFrom näitest

Võid soovida saada esimese väärtuse kohe, kui see saabub, ilma et peaksid ootama Observable'i valmimist, et saaksid kasutada firstValueFrom'i. firstValueFrom lahendab lubaduse esimese Observable'i poolt väljastatud väärtusega ja loobub koheselt, et säilitada ressurss. Kui Observable lõpetatakse ilma mingit väärtust kiirgamata, lükatakse firstValueFrom samuti tagasi EmptyErroriga.



lastValueNäitest

lastValueFrom on peaaegu identne toPromise()-ga, mis tähendab, et see parseerib viimase väärtusega, mis saavutatakse Observable lõpetamisel, kuid käitub teisiti, kui Observable lõpetab ilma ühtegi väärtust väljastamata. Kui Observable lõpetatakse ilma käivitamata, lahendab toPromise() edukalt määratlemata (seega tagastustüüp muutub) ja lastValueFrom lükatakse tagasi kui EmptyError. Seetõttu on lastValueFromi tagastustüüp Promise<T>, nagu toPromise() RxJS 6-s.





Näidisparsing

RxJS-is genereerib interval(1000) vaadeldava jada, mis kiirgab iga 1000 millisekundi (st 1 sekundi) järel järkjärgulise arvujada, alustades nullist.

Järgmisena on .pipe(take(10)) operaatoriahel, mis piirab Observable'i poolt kiirgatavate elementide arvu. Siin tähendab take(10), et võetakse ainult esimese 10 kiirgatud väärtused.

Selgitame seda väljendit üksikasjalikult:

interval(1000): Loo vaadeldav, mis kiirgab arvu iga 1 sekundi järel. Numbrijada algab nullist ja suureneb iga kord 1 võrra.

.pipe(take(10)): Kasuta .pipe() meetodit mitme operaatori ühendamiseks. Siin kasutame take(10) operaatorit, mis piirab Observable'i nii, et see kiirgab ainult esimesed 10 väärtust.

Test EmptyError vigade jaoks

Kood on järgmine:


või




Viide:Hüperlingi sisselogimine on nähtav.




Eelmine:MySQL käsurea päringutulemused tagastavad ? küsimärk
Järgmine:Angular 18 seeria (kakskümmend kaks) tutvustab FontAwesome ikoonide teeki
 Üürileandja| Postitatud 2024-8-6 11:21:09 |
Kui kasutad Angular HTTP-s lastValueFrom või firstValueFrom, on see ekvivalentne, vahet pole, st võid kasutada kumbagi.
 Üürileandja| Postitatud 2024-10-16 21:44:52 |
Kui tagastad of(), võid saada järjestuse elementide puudumise erandi, lastValueFrom võtab nüüd konfiguratsiooniparameetri oma teiseks parameetriks ning saad määrata vaikimisi väärtuse, mida kiirgatakse, kui vaadeldav on tühi:

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com