java - RxJava 2 运算符组合,仅提供一组值中的第一个值

标签 java android rx-java rx-android

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

最佳答案

试试这个:

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

解释:如果我理解正确的话,如果之前 1 秒没有发出任何元素,那么您想要发出元素。这相当于让一个项目后面的第一个元素去抖 1 秒。下面的弹珠图也可能有帮助:

enter image description here

关于java - RxJava 2 运算符组合,仅提供一组值中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681548/

相关文章:

android - Gradle 3.0 transformClassesWithStackFramesFixerForDebug 重复条目

rx-java - 接收 : Combine ThrottleFirst and Sample operators

java - 在循环内发出值 (RxJava)

android - 是否有任何开发模式可以替代网络请求的 IntentService?

java - 将属性附加到 JAR 的 manifest.mf

android - Android水平 ScrollView 用于显示youtube视频

java - 类路径出现 NoClassDefFoundError

java - android.view.InflateException : Binary XML file line #12: Error inflating class fragment

java - Jsoup 将内容存入数据库

Java GUI 垂直对齐