RxJS - bufferToggle do operador de transformação

No caso de bufferToggle leva 2 argumentos, openings e fechandoSelector. Os argumentos de abertura são assináveis ​​ou uma promessa de iniciar o buffer e o segundo argumento fechamentoSelector é novamente assinável ou promete um indicador para fechar o buffer e emitir os valores coletados.

Sintaxe

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

Parâmetros

openings - Uma promessa ou notificação para iniciar o novo buffer.

closingSelector - Uma função que pegará os valores das aberturas observáveis ​​e retornará Assinante ou promessa.

Valor de retorno

Um observável será retornado, que terá uma matriz de valores em buffer.

Exemplo

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));

No exemplo acima, o buffer iniciará após 2s e terminará no intervalo de 1s se o valor recebido for par, caso contrário, ele esvaziará os valores do buffer e emitirá valores vazios.

Resultado