情景:
我宁愿做以下事情:
我如何实现上述描述?
我看过:
答案 0 :(得分:2)
您可以将timer
与debounceTime
合并,并使用它来对原始事件流进行抽样:
let $tick = Rx.Observable.timer(100, 100);
let $updates = $events
.sample($tick.merge($events.debounceTime(30))
.distinctUntilChanged();
这将每隔100毫秒发生一次事件,但如果事件发生在30毫秒的间隙之前也是如此。
使用sample
时,将忽略采样流中的值。因此,该技术创建了一个包含基于时间的要求和去抖动的采样流。无论何时发生,都会从原始流中获取最新值。
如果没有任何更改,使用distinctUntilChanged
可以防止连续重复的事件具有相同的值。如果您的数据是结构化的,或者无法与distinctUntilChanged
进行比较,则可能需要将比较函数作为参数添加到===
。