RxJava:如何编写类似末日的代码?

RxJava:如何编写类似末日的代码?,java,rx-java,reactive-programming,observable,Java,Rx Java,Reactive Programming,Observable,我在我的可观察的上使用了几个过滤器,我想在过滤结束时报告结果为空的情况。我无法在处理结束时执行此操作,因为此可观察对象应与另一个可观察对象连接: Observable.just(1, 2, 3) .concatWith( Observable.just(2, 4, 6) .filter(value -> ((value % 2) !

我在我的
可观察的
上使用了几个过滤器,我想在过滤结束时报告结果为空的情况。我无法在处理结束时执行此操作,因为此可观察对象应与另一个可观察对象连接:

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

您可以使用
switchiffempty
并使用此回退
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,4,6)
.filter(值->((值%2)!=0))
//将空的可观察对象替换为空的可观察对象
//但是这个可观察的将在它完成时记录下来
.switchIfEmpty(Observable.empty().doOnTerminate(()->System.out.println(“empty!”))
.subscribe();

您可以使用Maven Central上的变形金刚。末日之门

source.compose(Transformers.doOnEmpty(action))
如果您关心效率(分配/性能),则可以使用此解决方案,但如果不这样,则可以使用@dwursteisen的解决方案