[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" ... */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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