[RxJS] Transformation operator: bufferToggle, bufferWhen

bufferToggle(open: Observable, () => close: Observalbe : Observalbe<T[]>)

bufferToggle take two args, first is opening observable, 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$, () => {
  return close$;
});

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)-----([1,2])-([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"
...
*/
复制代码

 

posted @   Zhentiw  阅读(422)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2015-05-28 [PHP] csv to xml
点击右上角即可分享
微信分享提示