Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 3279|Risposta: 2

[Altri] RxJS sulla differenza tra firstValueFrom e lastValueFrom

[Copiato link]
Pubblicato il 6-8-2024 11:19:02 | | | |
Requisiti: Il progetto deve convertire gli Observables in Promises e attendere il completamento, e quando si utilizza il metodo toPromise() in un progetto Angular, l'hint è stato deprecato, e quindi si raccomanda di utilizzare i metodi statici firstValueFrom o lastValueFrom.



Perché deprecare il metodo toPromise()?

Poiché il nome del metodo toPromise() non indica mai quale valore emesso la Promessa risolverà, poiché gli Observables possono produrre valori multipli nel tempo. Quando si converte in una Promessa, si può voler scegliere se selezionare il primo valore ad arrivare o l'ultimo valore. Per risolvere tutti questi problemi, abbiamo deciso di deprecare toPromise() e introdurre due nuove funzioni helper per convertire in promises.

Semplicemente capireGli osservabili producono valori multipliE poiLe promesse porteranno a un solo valorePoi, alcuni utenti vogliono usare il primo valore, altri vogliono usare l'ultimo valore, quindi appaiono firstValueFrom e lastValueFrom. (Nota: toPromise() è l'ultimo valore per ottenere gli osservabili

esempio firstValueFrom

Potresti voler ottenere il primo valore quando arriva senza aspettare che l'Observable si completi, così puoi usare firstValueFrom. firstValueFrom risolverà la Promessa con il primo valore emesso dall'Osservabile e cancellerà immediatamente l'iscrizione per preservare la risorsa. Se l'Observable si completa senza emettere alcun valore, anche il firstValueFrom verrà rifiutato con un VuotoErrore.



esempio: lastValueFrom

lastValueFrom è quasi identico a toPromise(), il che significa che parsi con l'ultimo valore raggiunto quando l'Observable si completa, ma si comporta diversamente quando l'Observable si completa senza emettere un solo valore. Quando l'Observable si completa senza essere attivato, toPromise() risolverà con successo in undefined (quindi il tipo di ritorno cambia), e lastValueFrom verrà rifiutato come EmptyError. Pertanto, il tipo di ritorno di lastValueFrom è Promise<T>, proprio come toPromise() in RxJS 6.





Esempio di analisi

In RxJS, intervallo(1000) genera un osservabile che emette una sequenza incrementale di numeri ogni 1000 millisecondi (cioè 1 secondo), a partire da 0.

Successivamente, .pipe(take(10)) è una catena di operatori che limita il numero di elementi che l'Observable emette. Qui, take(10) significa che vengono presi solo i valori dei primi 10 emisi.

Spieghiamo questa espressione in dettaglio:

intervallo(1000): Creare un osservabile che emette un numero ogni 1 secondo. La sequenza numerica inizia da 0 e aumenta di 1 ogni volta.

.pipe(take(10)): Usa il metodo .pipe() per collegare più operatori. Qui usiamo l'operatore take(10), che limita l'Osservabile a emettere solo i primi 10 valori.

Testare gli errori EmptyError

Il codice è il seguente:


o




Riferimento:Il login del link ipertestuale è visibile.




Precedente:Risultati della query da riga di comando MySQL restituiscono ? Punto interrogativo
Prossimo:La serie Angular 18 (ventidue) introduce la libreria di icone FontAwesome
 Padrone di casa| Pubblicato il 6-8-2024 11:21:09 |
Se usi lastValueFrom o firstValueFrom in Angular HTTP, è equivalente, non c'è differenza, cioè puoi usare entrambi.
 Padrone di casa| Pubblicato il 16-10-2024 21:44:52 |
Se restituisci of() potresti ottenere un'eccezione no elements in sequence, lastValueFrom now prende il parametro di configurazione come secondo parametro, e puoi specificare il valore predefinito da emettere quando l'osservabile è vuoto:

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com