Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 3279|Răspunde: 2

[Altele] RxJS despre diferența dintre firstValueFrom și lastValueFrom

[Copiază linkul]
Postat la 2024-8-6 11:19:02 | | | |
Cerințe: Proiectul trebuie să convertească Observables în Promises și să aștepte finalizarea, iar când se folosește metoda toPromise() într-un proiect Angular, hint-ul a fost deprevăzut, iar apoi se recomandă utilizarea metodelor statice firstValueFrom sau lastValueFrom.



De ce să renunți la metoda toPromise()?

Pentru că numele metodei toPromise() nu indică niciodată ce valoare emisă va rezolva Promisiunea, deoarece Observabilele pot produce multiple valori în timp. Când convertești într-o Promisiune, poate vrei să alegi dacă vrei să alegi prima valoare care sosește sau ultima valoare. Pentru a rezolva toate aceste probleme, am decis să renunțăm la toPromise() și să introducem două noi funcții auxiliare pentru conversia în promisiuni.

Pur și simplu înțelegeObservabilele produc valori multipleApoiPromisiunile vor duce la o singură valoareApoi, unii utilizatori vor să folosească prima valoare, iar alții vor să folosească ultima valoare, astfel încât apar firstValueFrom și lastValueFrom. (Notă: toPromise() este ultima valoare pentru a obține observabilele

exemplul firstValueFrom

Poate vrei să obții prima valoare când sosește fără să aștepți completarea Observable-ului, ca să poți folosi firstValueFrom. firstValueFrom va rezolva Promisiunea cu prima valoare emisă de Observabil și se va dezabona imediat pentru a păstra resursa. Dacă Observabilul se completează fără a emite vreo valoare, primulValueFrom va fi, de asemenea, respins cu un VidtyError.



exemplu lastValueFrom

lastValueFrom este aproape identic cu toPromise(), ceea ce înseamnă că va analiza cu ultima valoare atinsă când Observabilul se termină, dar se comportă diferit când Observabilul se încheie fără a emite nicio valoare. Când Observabilul se finalizează fără a fi lansat, toPromise() va rezolva cu succes în undefined (deci tipul de returnare se schimbă), iar lastValueFrom va fi respins ca VidtyError. Prin urmare, tipul de returnare al lastValueFrom este Promise<T>, la fel ca toPromise() în RxJS 6.





Exemple de analiză sintonizată

În RxJS, interval(1000) generează un observabil care emite o secvență incrementală de numere la fiecare 1000 de milisecunde (adică 1 secundă), începând de la 0.

Apoi, .pipe(take(10)) este un lanț de operatori care limitează numărul de elemente pe care Observabilul le emite. Aici, take(10) înseamnă că doar valorile primelor 10 emise sunt luate.

Să explicăm această expresie în detaliu:

interval(1000): Creează un observabil care emite un număr la fiecare 1 secundă. Secvența numerică începe de la 0 și crește cu 1 de fiecare dată.

.pipe(take(10)): Folosește metoda .pipe() pentru a conecta mai mulți operatori. Aici folosim operatorul take(10), care limitează Observabilul să emită doar primele 10 valori.

Testează erorile EmptyError

Codul este următorul:


sau




Referință:Autentificarea cu hyperlink este vizibilă.




Precedent:Rezultatele interogării MySQL din linia de comandă returnează ? Semn de întrebare
Următor:Seria Angular 18 (douăzeci și doi) introduce biblioteca de icoane FontAwesome
 Proprietarul| Postat la 2024-8-6 11:21:09 |
Dacă folosești lastValueFrom sau firstValueFrom în Angular HTTP, este echivalent, nu există nicio diferență, adică poți folosi oricare dintre ele.
 Proprietarul| Postat pe 2024-10-16 21:44:52 |
Dacă returnezi of(), poți obține o excepție fără elemente în secvență, lastValueFrom now ia parametrul de configurare ca al doilea parametru, iar tu poți specifica valoarea implicită de emitere când observabilul este gol:

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com