O buffer opera em um observável e aceita o argumento como um observável. Ele começará a armazenar em buffer os valores emitidos em seu observável original em uma matriz e emitirá o mesmo quando o observável tomado como argumento for emitido. Assim que o observável tomado como argumento emite, o buffer é redefinido e começa a armazenar novamente no original até que o observável de entrada seja emitido e o mesmo cenário se repita.
Sintaxe
buffer(input_observable: Observable): Observable
Parâmetros
input_observable- um observável que fará o buffer emitir valores. Por exemplo, clique no botão.
Valor de retorno
Um observável será retornado, que terá uma matriz de valores em buffer. Vamos trabalhar em um exemplo para entender o funcionamento do operador buffer ().
No exemplo abaixo, usaremos um clique de botão como uma entrada observável para o buffer. O intervalo de 1s será o observável original no qual o buffer é chamado. O buffer irá coletar os cliques passados no intervalo de tempo fornecido.
Exemplo
import { fromEvent, interval } from 'rxjs';
import { buffer } from 'rxjs/operators';
let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let interval_events = interval(1000);
let buffered_array = interval_events.pipe(buffer(btn_clicks));
buffered_array.subscribe(arr => console.log(arr));
Resultado