Dica RxJS [filtro, takeWhile]

Jan 06 2023
Esta dica aborda a diferença entre os operadores filter e takeWhile da biblioteca RxJS. De acordo com a documentação oficial: filter Filtra itens emitidos pela fonte Observable emitindo apenas aqueles que satisfazem um predicado especificado.

Esta dica aborda a diferença entre os operadores filter e takeWhile da biblioteca RxJS .

Segundo a documentação oficial:

filtro

Filtre os itens emitidos pela fonte Observable emitindo apenas aqueles que satisfaçam um predicado especificado.

takewhile

Emite valores emitidos pela fonte Observable desde que cada valor satisfaça o predicado fornecido e, em seguida, conclua assim que esse predicado não for satisfeito.

Portanto, ambos os operadores usam uma função de predicado como o primeiro argumento que é invocado para cada valor emitido pelo fluxo de origem.

No entanto, o Observable retornado pelo operador do filtro nunca cancelará a assinatura do fluxo de origem. Vale a pena notar que o operador de filtro não pode ser usado para cancelar implicitamente a assinatura do Observable de origem quando uma função de predicado não for satisfeita:

Por outro lado, o fluxo retornado pelo operador takeWhile cancelará a assinatura do Observable de origem e emitirá a notificação completa assim que uma função de predicado retornar um valor falso. Como resultado, o operador takeWhile pode ser usado para cancelar implicitamente a assinatura do fluxo de origem com base em uma determinada condição:

Vale a pena observar que o Observable de origem não emite a notificação completa, no entanto, a função de retorno de chamada passada para o operador finalize é invocada no encerramento do fluxo, seja na conclusão ou no cancelamento da assinatura. Além disso, você pode controlar se o último valor emitido pelo fluxo de origem será ou não passado para a saída Observable (o segundo argumento do operador takeWhile que é falso por padrão).

Exemplo ao vivo:

Se você gostou da dica, por favor me dê alguns aplausos