java - RxJava 2.0 - 如何结合 Observable 和 Completable

标签 java rx-java2

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

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

Completable storeInDatabase(Data data);

Completable combinedCall(int param1, boolean param2);

实现 combinedCall 方法的最佳方式是什么:

  1. 从 makeHttpCall 获取数据
  2. 使用 storeInDatabase 存储它
  3. 返回在 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);
                }
            });
}

关于java - RxJava 2.0 - 如何结合 Observable 和 Completable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781436/

相关文章:

Java Instant 舍入到下一秒

Java Cucumber 无法识别我的字符串参数

java - 未经授权收集Google表格信息

android - SwitchIfEmpty 没有在里面执行 maybesource

android - RxJava 和改造的单元测试

java - 为什么map被调用多次?

java - 在java中调用grep时,它不适用于法语字符

java - 在Java中使用MappedByteBuffer读取文件的每一行

java - RxJava : How to dynamically emit items from an HTTP response

rx-java - 如何在 RxJava 中制作冷单 'hot'