当前位置: 首页 > 知识库问答 >
问题:

RxJava 2.0-如何将可观察和可完成结合起来

瞿兴朝
2023-03-14

假设存在包含方法的接口:

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

Completable storeInDatabase(Data data);

Completable combinedCall(int param1, boolean param2);

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

  1. 从makeHttpCall获取数据
  2. 使用store InDatabase存储它
  3. 返回在store InDatabase完成时完成的完成?

似乎在RxJava 1.0中可以执行Completable.merge(可观察),但合并似乎不再接受可观察。

共有1个答案

西门建安
2023-03-14

首先,我不认为合并很适合您的需求,因为store InDatabase必须在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);
                }
            });
}
 类似资料:
  • 我目前在Android和Kotlin上使用RxJava,但我有一个问题,如果不使用toBlocking(),我无法解决。 我在员工服务中有一个方法,它返回一个可观察的 这一切都很好,因为每当员工发生变化时,这个可观察对象就会发出新的员工列表。但是我想从员工那里生成一个PDF文件,这显然不需要每次员工更改时都运行。另外,我想从PDF生成器方法返回一个可完成的对象。我想在PDF中添加一个标题,然后遍历

  • 我有多个热观测器,它们可能发射也可能不发射项目。因此,我想把可观察项组合起来,然后如果其中任何一个发出结果,就处理结果,但如果其他可观察项在item发出,就应该一起处理。 还有可能在之前发出 最接近我所需要的,但只有当所有可观察到的对象发出至少一个项时才会发出结果。这个有无反应操作符吗?

  • 问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可

  • 我正在尝试使用gulp-watch和gulp-inject来构建我的节点Web应用程序。然而,一旦gulp-watch参与进来,涉及gulp-inject的构建步骤似乎就不起作用了。原因似乎是流永远不会结束,gulp-inject不知道何时开始。 我的gulpfile如下所示:

  • 我有两个可观察到的。它们都是可观察的类型 一种是冷的,称为初始值可观察(initialValueObservable),它通过可观察(Observable)从项目列表中发出。from()。 另一个是名为“valueUpdateObservable”的热门主题,它是一个发布主题,在出现新项目时通知订阅者。 在客户端中,我想同时订阅这两个,因此我从和发布的更新中获取初始值。我最初的方法是合并它们,但我

  • 我来自同步编程背景,我很难理解可观察性。 这是我的服务/提供商的摘录(离子2项目) 我将从订阅它。关于这一点,我有几个问题。 > 即使我没有声明,上面的代码是否返回一个可观察/观察者? 响应是JSON。如何检查/处理JSON并执行一些操作,如 那就做吧 我认为应该在提供者类中完成。只是一个典型的提示/例子将是真棒。 当请求到达subscribe方法时,它是否真的发生了? 创建和返回Angular