RxJS - Búfer de operador de transformación

En el caso de bufferToggle se necesitan 2 argumentos, aperturas y cierreSelector. Los argumentos de apertura son suscribibles o una promesa de iniciar el búfer y el segundo argumento, closedSelector es nuevamente suscribible o promete un indicador para cerrar el búfer y emitir los valores recopilados.

Sintaxis

bufferToggle(openings: SubscribableOrPromise, closingSelector: SubscribableOrPromise): Observable

Parámetros

openings - Una promesa o notificación para iniciar el nuevo búfer.

closingSelector - Una función que tomará los valores de aperturas observables y devolverá Suscribible o promesa.

Valor devuelto

Se devolverá un observable, que tendrá una matriz de valores almacenados en búfer.

Ejemplo

import { fromEvent, interval,EMPTY} from 'rxjs';
import { bufferToggle } from 'rxjs/operators';

let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let start = interval(2000);
let buffered_array = btn_clicks.pipe(
   bufferToggle(start, a => a%2 ==0 ? interval(1000): EMPTY)
);
buffered_array.subscribe(arr => console.log(arr));

En el ejemplo anterior, el búfer comenzará después de 2 segundos y finalizará cuando tengamos un intervalo de 1 segundo si el valor recibido es par; de lo contrario, vaciará los valores del búfer y emitirá valores vacíos.

Salida