RxJava 2.0 - 如何结合 Observable 和 Completable

RxJava 2.0 - how to combine Observable and Completable

假设有包含方法的接口:

Observable<Data> makeHttpCall(int param1, boolean param2);

Completable storeInDatabase(Data data);

Completable combinedCall(int param1, boolean param2);

实现 combinedCall 方法的最佳方法是:

  1. 从 makeHttpCall 获取数据
  2. 使用 storeInDatabase 存储它
  3. return storeInDatabase 完成时完成的可完成?

似乎在 RxJava 1.0 中可以做到 Completable.merge(Observable) 但合并似乎不再接受 Observable。

首先,我认为 merge 不适合您的需求,因为 storeInDatabase 必须对 makeHttpCall 的结果执行,而不是与它。

这应该适合你:

Completable combinedCall(int param1, boolean param2) {
    return makeHttpCall(param1, param2)
            .flatMapCompletable(new Function<Data, CompletableSource>() {
                @Override
                public CompletableSource apply(@NonNull Data d) throws Exception {
                    return storeInDatabase(d);
                }
            });
}