Suggerimento RxJS [filtro, takeWhile]

Jan 06 2023
Questo suggerimento copre la differenza tra gli operatori filter e takeWhile della libreria RxJS. Secondo la documentazione ufficiale: filter Filtra gli elementi emessi dalla sorgente Osservabile emettendo solo quelli che soddisfano un predicato specificato.

Questo suggerimento copre la differenza tra gli operatori filter e takeWhile della libreria RxJS .

Secondo la documentazione ufficiale:

filtro

Filtra gli elementi emessi dalla sorgente Observable emettendo solo quelli che soddisfano un predicato specificato.

takeWhile

Emette i valori emessi dalla sorgente Observable fintanto che ogni valore soddisfa il predicato dato, quindi si completa non appena questo predicato non è soddisfatto.

Pertanto, entrambi gli operatori accettano una funzione predicato come primo argomento che viene richiamato per ogni valore emesso dal flusso di origine.

Tuttavia, l'oggetto Observable restituito dall'operatore di filtro non annullerà mai la sottoscrizione dal flusso di origine. Vale la pena notare che l'operatore di filtro non può essere utilizzato per annullare implicitamente l'iscrizione alla sorgente Observable una volta che una funzione predicato non è soddisfatta:

D'altra parte, il flusso restituito dall'operatore takeWhile annullerà la sottoscrizione dall'Osservabile di origine ed emetterà la notifica completa una volta che una funzione di predicato restituisce un valore falso. Di conseguenza, l'operatore takeWhile può essere utilizzato per annullare implicitamente l'abbonamento al flusso di origine in base a una determinata condizione:

Vale la pena notare che la sorgente Observable non emette la notifica completa, tuttavia la funzione di callback passata all'operatore finalize viene richiamata al termine del flusso sia che si tratti di completamento o annullamento dell'abbonamento. Inoltre, puoi controllare se l'ultimo valore emesso dal flusso di origine verrà passato o meno all'output Observable (il secondo argomento dell'operatore takeWhile che è false per impostazione predefinita).

Esempio dal vivo:

Se ti piace il suggerimento, per favore fammi un applauso