说有包含方法的接口:
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);
}
});
}