RxJava中concatMap和flatMap有什么区别

2024-02-05

看起来这两个功能非常相似。他们有相同的签名(接受rx.functions.Func1<? super T, ? extends Observable<? extends R>> func),而且他们的弹珠图看起来一模一样。这里无法粘贴图片,但这是一张连续映射 http://netflix.github.io/RxJava/javadoc/rx/Observable.html#concatMap%28rx.functions.Func1%29,这是一个flatMap http://netflix.github.io/RxJava/javadoc/rx/Observable.html#flatMap%28rx.functions.Func1%29。结果的描述似乎存在一些细微的差异Observable,其中一个由concatMap包含由连接结果 Observables 所产生的项目,以及由flatMap包含首先合并生成的 Observables 并发出该合并结果所产生的项目。

然而,这种微妙之处我完全不清楚。谁能更好地解释这种差异,并最好给出一些例子来说明这种差异。



正如您所写,这两个函数非常相似,细微的区别在于如何创建输出(在应用映射函数之后)。

平面地图用途合并运算符 https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge而 concatMap 使用连接运算符 https://github.com/Netflix/RxJava/wiki/Mathematical-and-Aggregate-Operators#concat.

正如你所看到的 concatMap 输出序列是有序的 - 第一个 Observable 发出的所有项目都在第二个 Observable 发出的任何项目之前发出,
当 flatMap 输出序列被合并时 - 合并后的 Observable 发出的项目可以以任何顺序出现,无论它们来自哪个源 Observable。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxJava中concatMap和flatMap有什么区别 的相关文章

随机推荐

  • 在背景中绘图

    我有一个 IOS 应用程序 需要更新视图以响应用户或外部事件 绘制时间可以很短也可以很长 几秒 具体取决于视图中的内容 现在 绘图是在视图的 drawRect 方法中进行的 当绘图很长且存在大量用户交互时 应用程序将变得无响应 当需要更新时
  • 运行 liquibase 时出现值“CONTINUE”不是构面有效错误

    当我尝试运行以下命令时 java jar liquibase 3 4 1 jar classpath postgresql 9 2 1004 jdbc4 jar logLevel severe url jdbc postgresql loc
  • 是否可以更改 Postgres 中列的自然顺序?

    是否可以更改 Postgres 8 1 中列的自然顺序 我知道你不应该依赖列顺序 它不是基本的到我正在做的事情 我只需要它使一些自动生成的东西以更令人愉悦的方式出现 以便字段顺序从 pgadmin 通过后端一直到前端匹配 实际上 您可以直接
  • 复选框的表单模型绑定

    我正在使用 Laravel 4 1 在我的应用程序中我需要显示一个带有预填充复选框的表单 但我尝试使用表单模型绑定来做到这一点 但它不起作用 Form model user array route gt settings notify di
  • 如何在 Python 中将自定义类设为集合

    我有 Matlab 背景 在 matlab 中 我可以创建一个类定义 然后创建一个对象数组 我可以轻松地使用索引取消引用每个对象 此外 当我从对象数组 没有索引 调用方法时 我可以访问数组中的所有对象 例如 假设 myNewClass 具有
  • DotNetOpenAuth 可在哪些 .NET 框架上使用?

    大多数 全部 OAuth 资源 有关协议和代码库的信息 以便在您自己的应用程序中轻松使用它们 人们似乎在互联网上找到的资源似乎假设您正在使用它的应用程序是一个 Web 应用程序 不过我想开始使用 OAuth我的 Windows Mobile
  • 使用jdatabase更新数据库中的记录

    如何使用数据库更新 Joomla 3 中的记录 这是我到目前为止所拥有的 db JFactory getDBO query db gt getQuery true query gt update test AS h query gt set
  • Arrays.asList 给出 UnsupportedOperationException [重复]

    这个问题在这里已经有答案了 The List由返回Arrays asList不能通过使用诸如add or remove 但如果你把它传递给Collections sort方法 它可以毫无问题地对数组进行排序 我预计会出现异常 这似乎是一种非
  • 无法重新安装 Python 2.7 的 PyTables

    除了 2 7 之外 我还安装了 Python 2 7 当再次安装 PyTables 2 7 时 我收到此错误 发现已安装 numpy 1 5 1 软件包 错误 找不到本地 HDF5 安装 您可能需要明确说明本地 HDF5 标头和 可以通过设
  • 为什么这个构造函数无法在 Codeigniter 中加载?

  • 如何在javafx-8中setEnabled()?

    与 Swing 不同 Javafx 8 似乎没有用于 UI 控件的 setEnabled 方法 或等效方法 解决方法的建议 您可以使用setDisable 而不是 javaFx 中的 setEnabled 喜欢button setDisab
  • 如何过滤每个返回行的 json 数组?

    我有一个带有 json 字段的表 其中存储了对象数组 我想查询此表 并通过使用某些条件过滤它们 为每个返回的行仅返回 json 数组对象的子集 例如对于行 id 1 jsonColumn field abc field def field
  • 数据流进入 Beam Pipeline 时的附加参数

    我正在研究 Dataflow 我已经通过 Python SDK 构建了自定义管道 我想将数据流 UI 上的参数添加到我的自定义管道中 使用附加参数 参考者https cloud google com dataflow docs guides
  • Xcode 9,迦太基。 iTunes Connect 错误:“无效捆绑包 - 不允许 LLVM 检测”

    今天我下载了 Xcode 9 并对我的应用程序进行了必要的更改以进行编译 该应用程序正在本地编译和运行 没有任何问题 我使用 Xcode 9 将其上传到 App Store 上传成功 没有任何错误 然后我收到 Apple 发来的以下电子邮件
  • 如何获取 ActionLink 的工具提示?

    我认为这应该很简单 但我找不到这个选项 我如何获得tool tip alt对于我的 ActionLink 它是 html 标题属性
  • 将 .java 文件中实例化的 TilePane 添加到 FXML

    我正在尝试将带有 ImageView 子级的 TilePane 添加到 JavaFX 中的场景中 目前 我的 FXML 正在加载一个空的 TilePane 我制作 TilePane 的当前 FXML 行是
  • 从 Firebase Admin SDK 导入 json 文件

    我可以通过在 Firebase 控制台中导入 json 文件来更新整个数据库 真实数据库 如何从服务器端以编程方式执行此操作 使用 Firebase Admin I tried private void uploadFirebaseData
  • mongodump 与 mongoexport:哪个更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想导出非常大的集合并将它们导入到另一台服务器的另一个数据库中 我发现至少有两种方法 蒙戈出口公司 and 蒙戈转储 我搜索了之前关于这个问题的
  • 如何使用 gzip 设置内容编码

    我正在使用 gzip 压缩 html 文件 当我请求index html时 浏览器 FF 3 0 10 不解压或显示index html gz 在服务器上预先压缩 在哪里可以确认压缩标头 内容编码 和浏览器 接受编码 我使用 C 中的 zl
  • RxJava中concatMap和flatMap有什么区别

    看起来这两个功能非常相似 他们有相同的签名 接受rx functions Func1