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