【问题标题】:How to change rxjava/rxscala operator (.debounce) parameters after initialisation初始化后如何更改 rxjava/rxscala 运算符(.debounce)参数
【发布时间】:2019-04-25 11:59:00
【问题描述】:

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

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

我看到 .debounce 可以带一个 DebounceSelector,并认为这可能是解决方案。

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

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

如果有任何帮助,我将不胜感激。 干杯! 亚当

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多