【问题标题】:RxJava: how to code something like doOnEmpty?RxJava:如何编写类似 doOnEmpty 的代码?
【发布时间】:2016-12-07 21:36:02
【问题描述】:

我在 Observable 上使用了多个过滤器,我想在过滤结束时报告结果为空的情况。我不能在处理结束时这样做,因为这个 observable 应该与另一个连接:

        Observable.just(1, 2, 3)
                .concatWith(
                        Observable.just(2, 4, 6)
                                .filter(value -> ((value % 2) != 0))
                                // report if empty
                )

【问题讨论】:

    标签: java rx-java reactive-programming observable


    【解决方案1】:

    您可以使用switchIfEmpty 并使用此备用Observable 做一些事情

     Observable.just(2, 4, 6)
                .filter(value -> ((value % 2) != 0))
                // replace the empty observable with an empty observable
                // but this observable will log when it will completed 
                .switchIfEmpty(Observable.<Integer>empty().doOnTerminate(() -> System.out.println("empty !")))
                .subscribe();
    

    【讨论】:

      【解决方案2】:

      您可以使用 Maven Central 上的 rxjava-extras 中的 Transformers.doOnEmpty

      source.compose(Transformers.doOnEmpty(action))
      

      如果您关心效率(分配/性能),则可以使用此解决方案,否则请使用 @dwursteisen 的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-29
        • 2020-12-08
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        相关资源
        最近更新 更多