RxJava 2.0 - 如何结合 Observable 和 Completable

3

假设有一个包含方法的接口:

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

Completable storeInDatabase(Data data);

Completable combinedCall(int param1, boolean param2);

如何最好地实现combinedCall方法,使其能够:

  1. 从makeHttpCall中获取数据
  2. 使用storeInDatabase存储数据
  3. 返回一个Completable,当storeInDatabase完成后,该Completable也完成。

在RxJava 1.0中,似乎可以使用Completable.merge(Observable)来实现,但merge不再接受Observable。


你有RxJava 1.0的代码吗? - yosriz
1个回答

6

首先,我不认为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);
                }
            });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接