我在rxjava / rxscala中使用.debounce运算符来捕获甚至在彼此给定时间段内发生的某些事件,但是希望使给定时间段可控。 .debounce使用的时间段作为参数给出。
理想情况下,我希望能够向.debounce运算符传递一个可观察到的结果,即它使用最新值来确定要使用的反跳时间段。像.debounce(timePeriodController,TimeUnit.Seconds)之类的东西。
我已经看到.debounce可以采用DebounceSelector,并认为这可能是解决方案。
我还看到在这种情况下.flatMap可以以非常复杂的方式使用。
编辑:似乎在RxJS中,.debounce可能需要一个durationSelector,但是目前在RxJava中是不可能的。我想知道是否有解决方法?
我将不胜感激。 干杯! 亚当
答案 0 :(得分:0)
当需要更改计时器操作符(例如debounce
)的参数时,我使用switchMap()
操作符。
BehaviorSubject<Long> timer = BehaviorSubject.create(100);
...
timer
.distinctUntilChanged()
.switchMap( timerValue ->
originalSource
.debounce(timerValue))
.subscribe(...);
每当计时器值更改时,防抖动间隔就会更改。