Buffertoggle (open:observable, () = close:observalbe:observalbe<t[]>)
Buffertoggle take both args, first is opening observable, and Seconde is a function which return an observable for closing.
The closeing Observalbe only execute after opening emit value.
Const source$ = Rx.Observable.interval (500); Const open$= Rx.Observable.interval (1500); Const close$= Rx.Observable.interval (1000);/**---0---1---2---3---4---5---6---7---8---9----.... (source)-----------1-----------2-----------3--------... (OPEN)------x------x------x ... (Close) Buffertoggle (open$, () = close$)------------------([2,3])-----([5.6])-----([8,9])--...*/Const foo$= Source$.buffertoggle (open$, () = = { returnclose$;}); Foo$.subscribe ((x)= = Console.debug ("Next:" +x), (ERR)=Console.error (Err), ()= = Console.info ("Done"))/*"next:2,3" "next:5,6" "next:8,9" "next:11,12" ...*/
Bufferwhen (() = Observable):
Bufferwhen takes a function which return observable.
Const source$ = Rx.Observable.interval (500); Const close$= Rx.Observable.interval (1000);/**---0---1---2---3---4---5---6---7---8---9----.... (source)-------0-------1-------2-------3-------4---.... (Close) Bufferwhen (() =>close$)-------(0)-----([up])-([3,4])-([5,6])--......*/Const foo$= Source$.bufferwhen (() =close$); Foo$.subscribe ((x)= = Console.debug ("Next:" +x), (ERR)=Console.error (Err), ()= = Console.info ("Done"))/*"next:0" "next:1,2" "next:3,4" "next:5,6" "next:7,8" ...*/
[RxJS] Transformation Operator:buffertoggle, Bufferwhen