rxjs - RXJS:总计反跳

标签 rxjs reactivex

我的用例如下:我得到事件,有时会突然发生。如果发生突发,我只需要处理一次即可。去抖动会执行此操作。

但是,去抖动仅给我提供连拍的最后一个元素,但我需要了解连拍中的所有元素才能汇总(使用平面图)。

这可以通过定时窗口或缓冲区来完成,但是,这些间隔是固定的,因此缓冲区/窗口超时可能会在突发的中间发生,因此将突发分为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/

相关文章:

android - 如何在 rxkotlin 中链接 "Single - Completeable - Completable"?

java - 如何构造具有自定义数字和不同延迟的 Observable?

angular - 尽管主题接下来调用,但指令订阅不会触发

angular - 当一个 observable 依赖于另一个 observable 的结果时,避免使用 combine latest 进行嵌套订阅

javascript - 异步管道可观察覆盖闪烁 DOM

c# - 通过多个消费者和事件处理程序使用存储的事件

typescript - RxJs `sample` 运算符多次

javascript - Angular HttpInterceptor 不适用于 forkJoin

javascript - 在 Angular2 中重置 RxJ

.net - 在Rx中,处理线程安全是消费者(IObserver)的责任吗?