如何将rxJava2的Observable转换为Completable?

时间:2016-11-03 10:40:43

标签: java observable rx-java reactive-programming rx-java2

我有Observable流,我想将其转换为Completable,我该怎么做?

5 个答案:

答案 0 :(得分:62)

流畅的方式是使用Observable.ignoreElements()

Observable.just(1, 2, 3)
.ignoreElements()

如果需要,可以通过toObservable将其转换回来。

答案 1 :(得分:12)

您可以执行以下操作。

Observable<Integer> observable = Observable.just(1, 2, 3);
Completable completable = Completable.fromObservable(observable);

与Observable类似,您必须订阅completable才能启动Observable包装的异步进程。

可以找到更多详细信息here in the Java doc for the method

答案 2 :(得分:0)

使用Completable.merge(YourObservable()...

答案 3 :(得分:0)

您可以使用 Completable.fromObservable(xx)。在我的项目中效果很好。

答案 4 :(得分:0)

据我了解,所有这些解决方案仅在可观察调用onComplete下才有效,如果您想让结果Completable在第一个onNextonError之后触发,这是不够的,因此,在这种情况下,我建议您这样做:

Observable<Integer> observable = Observable.just(1, 2, 3);
Completable completable = observable.firstOrError().ignoreElement()