bufferCount<T>(bufferSize: number, startBufferEvery: number = null): OperatorFunction<T, T[]>
| bufferSize | El tamaño máximo del búfer. |
| startBufferEvery | Opcional. El valor por defecto es null.
El intervalo a partir del cual abrir un nuevo búfer. Por ejemplo, si el valor de startBufferEvery es 2, entonces se abrirá un nuevo búfer cada dos emisiones de la fuente. Por defecto, se abre un búfer al comienzo de la fuente. |
OperatorFunction<T, T[]>: Un Observable de arrays de valores almacenados.
Almacena valores en un array, y emite dicho array cuando su tamaño sea el especificado por bufferSize.
Almacena valores del Observable fuente y emite el búfer cuando este llega al tamaño de bufferSize, y abre un nuevo búfer cada startBufferEvery emisiones. Si no se proporciona startBufferEvery o su valor es null, entonces se abre un nuevo búfer inmediatamente después de que se cierre y se emita el búfer anterior.
Almacenar cada 5 valores en un array y emitirlo
import { bufferCount } from "rxjs/operators";
import { interval } from "rxjs";
const number$ = interval(1000);
number$.pipe(bufferCount(5)).subscribe(console.log);
// Output: [0, 1, 2, 3, 4], [5, 6, 7, 8, 9]...
Emitir los últimos dos eventos click en un array
import { fromEvent } from "rxjs";
import { bufferCount } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const buffered = clicks.pipe(bufferCount(2));
buffered.subscribe((x) => console.log(x));
En cada click, emitir los dos últimos eventos click en un array
import { fromEvent } from "rxjs";
import { bufferCount } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const buffered = clicks.pipe(bufferCount(2, 1));
buffered.subscribe((x) => console.log(x));
Documentación oficial en inglés