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 方法的最佳方法是:
- 从 makeHttpCall 获取数据
- 使用 storeInDatabase 存储它
- 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);
}
});
}
假设有包含方法的接口:
Observable<Data> makeHttpCall(int param1, boolean param2);
Completable storeInDatabase(Data data);
Completable combinedCall(int param1, boolean param2);
实现 combinedCall 方法的最佳方法是:
- 从 makeHttpCall 获取数据
- 使用 storeInDatabase 存储它
- 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);
}
});
}