34

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

4

5 回答 5

95

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

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

toObservable如果需要,将其转换回来。

于 2016-11-03T21:04:59.003 回答
17

您可以执行以下操作。

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

就像在 Observable 上一样,您必须订阅 才能启动包装completable的异步过程。Observable

可以在该方法的 Java 文档中找到更多详细信息。

于 2016-11-03T14:27:28.540 回答
3

据我了解,所有这些解决方案仅在 Observable call 时才有效,如果您希望结果在 first or之后触发onComplete,这还不够,所以对于这种情况,我建议这样做:CompletableonNextonError

Observable<Integer> observable = Observable.just(1, 2, 3);
Completable completable = observable.firstOrError().ignoreElement()
于 2019-05-27T13:10:08.507 回答
0

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

于 2016-11-03T13:12:13.867 回答
0

您可以使用Completable.fromObservable(xx)。这在我的项目中运行良好。

于 2018-12-11T07:49:21.723 回答