我的用例如下:我得到的事件有时会爆发.如果发生爆发,我只需要处理一次.去抖动就是这样.
然而,debounce只给了我一个爆发的最后一个元素,但我需要知道一个爆发中的所有元素聚合在它们上面(使用flatmap).
这可以通过定时窗口或缓冲区来完成,但是,这些是固定间隔,因此缓冲区/窗口超时可能发生在突发中间,因此将突发分成2个部分而不是1.
所以我想要的是类似的东西
. . event: a . . -> a . . . . . .event: b .event: c .event: d . .-> b,c,d . . . . .event : e . . -> e .
这可以通过将debounced流作为关闭选择器传递到
buffer来实现,例如:
var s = Rx.Observable.of('a') .merge(Rx.Observable.of('b').delay(100)) .merge(Rx.Observable.of('c').delay(150)) .merge(Rx.Observable.of('d').delay(200)) .merge(Rx.Observable.of('e').delay(300)) .share() ; s.buffer(s.debounce(75)).subscribe(x => console.log(x));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。