RxJS - Transformation Operator bufferCount
No caso do operador buffercount, ele coletará os valores do observável no qual é chamado e emitirá os mesmos quando o tamanho do buffer fornecido para buffercount corresponder. Leva 2 argumentosbuffersize e o segundo é startBufferEvery ou seja, ele contará os novos valores de startBufferEvery se fornecidos ou então a partir do início da fonte observável.
Sintaxe
bufferCount(bufferSize: number, startBufferEvery: number = null): Observable
Parâmetros
bufferSize - O tamanho do buffer a ser emitido.
Valor de retorno
Um observável será retornado, que terá uma matriz de valores em buffer.
Veremos um exemplo funcional de bufferCount ()
Exemplo 1
import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';
let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4));
buffered_array.subscribe(arr => console.log(arr));
No exemplo acima, o bufferSize é 4. Portanto, após uma contagem de 4 cliques, a matriz de eventos de clique é coletada em uma matriz e exibida. Como não fornecemos startBufferEvery, os valores serão contados desde o início.
Resultado

Exemplo 2
import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';
let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4, 2));
buffered_array.subscribe(arr => console.log(arr));
Neste exemplo, adicionamos startBufferEvery, portanto, após cada 2 cliques, ele exibirá uma contagem de buffer de 4 eventos de clique.
Resultado
