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的解决方案