说有包含方法的接口:

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

Completable storeInDatabase(Data data);

Completable combinedCall(int param1, boolean param2);


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


从makeHttpCall获取数据
使用storeInDatabase存储它
在storeInDatabase完成时返回的Completable?


似乎在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);
                }
            });
}

07-26 05:32