1

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

理想情况下,我希望能够向 .debounce 运算符传递一个 observable,它使用 的最新值来确定去抖使用的时间段。.debounce(timePeriodController, TimeUnit.Seconds) 之类的东西。

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

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

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

我会很感激任何帮助。干杯! 亚当

4

1 回答 1

1

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

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

每当定时器值改变时,去抖动间隔就会改变。

于 2019-04-26T14:32:23.633 回答