O operador distinctUntilChanged()
do RxJS não possui um tamanho de buffer padrão, ele somente compara o valor atual com o valor imediatamente anterior e emite apenas se forem diferentes. Quem desejar limitar a comparação a um número específico de valores anteriores, pode combinar o distinctUntilChanged() com o operador bufferCount()
.
.pipe(
tap(() => console.log('Fluxo inicial')),
debounceTime(300),
distinctUntilChanged(),
bufferCount(11, 1),
switchMap((valorDigitado) => this.service.buscar(valorDigitado)),
tap(() => console.log('Requisições ao servidor'))
)
Para definir cache dos 10 resultados anteriores, pode-se usar bufferCount(11,1)
(10 valores anteriores mais o valor atual)