我的用例如下:我得到事件,有时会突然发生。如果发生突发,我只需要处理一次即可。去抖动会执行此操作。
但是,去抖动仅给我提供连拍的最后一个元素,但我需要了解连拍中的所有元素才能汇总(使用平面图)。
这可以通过定时窗口或缓冲区来完成,但是,这些间隔是固定的,因此缓冲区/窗口超时可能会在突发的中间发生,因此将突发分为2个部分来处理而不是1。
所以我想要的是
.
.
event: a
.
. -> a
.
.
.
.
.
.event: b
.event: c
.event: d
.
.-> b,c,d
.
.
.
.
.event : e
.
. -> e
.
最佳答案
这可以通过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));
这是一个可运行的版本:https://jsbin.com/wusasi/edit?js,console,output
关于rxjs - RXJS:总计反跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720339/