初始化后如何更改rxjava / rxscala运算符(.debounce)参数

时间:2019-04-25 11:59:01

标签: rx-java rx-java2 rx-scala

我在rxjava / rxscala中使用.debounce运算符来捕获甚至在彼此给定时间段内发生的某些事件,但是希望使给定时间段可控。 .debounce使用的时间段作为参数给出。

理想情况下,我希望能够向.debounce运算符传递一个可观察到的结果,即它使用最新值来确定要使用的反跳时间段。像.debounce(timePeriodController,TimeUnit.Seconds)之类的东西。

我已经看到.debounce可以采用DebounceSelector,并认为这可能是解决方案。

我还看到在这种情况下.flatMap可以以非常复杂的方式使用。

编辑:似乎在RxJS中,.debounce可能需要一个durationSelector,但是目前在RxJava中是不可能的。我想知道是否有解决方法?

我将不胜感激。 干杯! 亚当

1 个答案:

答案 0 :(得分:0)

当需要更改计时器操作符(例如debounce)的参数时,我使用switchMap()操作符。

BehaviorSubject<Long> timer = BehaviorSubject.create(100);
...
timer
  .distinctUntilChanged()
  .switchMap( timerValue ->
    originalSource
      .debounce(timerValue))
  .subscribe(...);

每当计时器值更改时,防抖动间隔就会更改。