【问题标题】:RxJava 2 operator combination that delivers only the first Value from a bunchRxJava 2 运算符组合,仅提供一堆中的第一个值
【发布时间】:2017-10-12 07:17:14
【问题描述】:

这个想法是,当我多次调用publishSubject.onNext(someValue) 时,我只需要像debounce 运算符那样获取一个值,但它提供了最后一个值,我需要跳过所有值,除了第一个值,直到我停止呼叫onNext() 1 秒。 我尝试使用throttleFirst(1000,TimeUnit.MILLISECONDS) 之类的东西,但它不像 debounce 那样工作,它只是在每次交付后创建窗口,并在 1 秒后立即交付下一个值。

【问题讨论】:

  • 可以发布您的示例代码吗?

标签: java android rx-java rx-android


【解决方案1】:

试试这个:

// Observable<T> stream = ...;
stream.window(stream.debounce(1, TimeUnit.Seconds))
      .flatMap(w -> w.take(1));

解释:如果我理解正确,如果 1 秒前没有发射任何项目,你想发射项目。这等效于在一个项目之后得到第一个元素去抖动 1 秒。下面的大理石图也可能有所帮助:

【讨论】:

    【解决方案2】:

    您可以使用第一个运算符。喜欢:

    Observable.first()
    

    只取第一个值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2016-02-10
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多