如何并行执行 2 个 Observable,忽略它们的结果并执行下一个 Observable

2023-12-23

我必须并行执行 2 个 observable(不关心它们的输出),当它们都完成时 -> 运行另一个 observable。

这是我的解决方案,但我觉得还有更好的解决方案:

rx.Observable<GameObject> obs1 = ...;
rx.Observable<GameObject> obs2 = ...;

rx.Observable.merge(obs1,obs2).takeLast(1)
.flatMap(mergeObj -> {

    return payoutStrategy.calculatePayout(gameTemplate, gameData);
}).subscribe(results -> { 
...
});

我使用合并只是为了调用 2 个 obs,然后使用“takeLast(1)”来忽略输入“flatMap”两次。

这个解决方案远非优雅,但它有效。

有什么想法可以让它变得更好吗?

Thanks!


concat对于在完成某件事后做某事很有用。因为类型Observable由返回calculatePayout可能有所不同,您将空流转换为其结果类型:

obs1.mergeWith(obs2)
    .ignoreElements()
    .castAs(Payout.class)
    .concatWith(payoutStrategy.calculatePayout(gameTemplate, gameData))
    .subscribe( ...)

顺便说一句,如果obs1 and obs2还不是异步源那么你可以这样做以确保obs1 and obs2并行运行:

obs1.subscribeOn(scheduler).mergeWith(obs2.subscribeOn(scheduler))
    ...

取决于什么obs2是在做scheduler可能Schedulers.computation() or Schedulers.io().

对于多个源可观察量,您也可以这样做:

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

如何并行执行 2 个 Observable,忽略它们的结果并执行下一个 Observable 的相关文章

  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 访问 Angular Material 表中的输入字段

    几天来我一直在尝试从角度材质表内的输入字段获取数据 我基本上是用来自 API 的值填充表格 但是每当我们没有获得任何日期时 在我的情况下 课程没有设置预定日期 我会插入一个文本框 其中应显示该值这样用户就可以为该特定课程设置日期 Like
  • Orange Hrm 3.1-向选项卡添加新的菜单标题

    我是 symfony 框架的新手 我使用的是 Orangehrm 3 1 1 我在第二级选项卡中添加了一个新的菜单标题 但我不知道如何导航到特定的 href 链接 请帮我完成步骤 这是我通过数据库添加菜单项的方法 要在 Orangehrm
  • 如何在 Android CalendarView 上仅显示特定月份?

    我想在 CardView 上显示特定月份without下一个和上一个箭头用于导航日历 如果我想显示 2010 年 2 月 用户必须只能看到 2010 年 2 月 他们无法查看下个月或上个月 我跟着this https stackoverfl
  • 通过回溯分割字符串

    我正在尝试编写一个代码 将无空格的字符串分割成有意义的单词 但是当我给出像 arealways 这样的句子时 它返回 a real ways 而我想要的是 are 总是 我的字典包含所有这些词 我怎样才能编写一个不断回溯直到找到最佳匹配的代
  • 在R中绘制图形G=(V,E)

    我想通过 ggplot 或一些 R 内置函数在 R 中绘制标准 G V E 图 我有一个包含顶点坐标的数据框 gt V x y 1 589 3438 6422 883 2 8762 6921 7789 147 3 7973 0883 455
  • 样式显示在 Firefox、Opera、Safari 中不起作用 -(IE7 可以)

    我有绝对的定位div我想在用户单击链接时显示 这onclick链接的调用一个 js 函数 该函数将 div 的显示设置为阻止 也尝试过 inline table cell inline table ETC 这在 IE7 中效果很好 但在我尝
  • 语法高亮显示:Eclipse 如何做到如此快?

    我用 Java 为 Android 开发了一个语法荧光笔 它运行良好 但问题是处理大文件时速度可能会很慢 所以我想知道像 Eclipse 和 Gedit Ubuntu 这样的源代码编辑器如何快速突出显示您刚刚编写的内容 例如 如果您在编写
  • 任何人都知道用 *[class] 标记一个类的目的是什么

    今天我收到了一位客户发来的文件 该文件是电子邮件模板 在移动版本的 css 中 所有类规范均以 class 开头 e g class centertext somespec 0 有人知道将其添加到课程中的目的是什么吗 thanks 有一个雅
  • Base64 编码:非法 Base64 字符 3c

    我正在尝试将 xml 格式的数据解码为字节base64我遇到了问题 我的方法是在java中 它需要一个String数据并将其转换为bytes就像下面这样 String data string of data in xml format by
  • 将 Common Lisp 代码移植到 Clojure

    将 Common Lisp 应用程序移植到 Clojure 有多实用 更具体地说 Common Lisp 中存在哪些 Clojure 中不存在的功能 需要重写 有一个clojure org 上的列表 http clojure org lis
  • Go中如何进行除法运算

    我正在尝试用 Go 进行简单的除法 fmt Println 3 10 这会打印 0 而不是 0 3 这有点奇怪 有人可以分享一下这背后的原因是什么吗 我想在 Go 中执行不同的算术运算 Thanks 二元运算的操作数3 10是无类型常量 规
  • 了解 RTF 并使用 vb.net 进行编辑

    我的 vb net 表单中有这个 RichTextbox 我想当用户单击按钮时 例如加粗所选文本 我将如何执行此操作 另外 我不想使用标准的 vb net 表达式 例如RichTextBox1 SelectedText Font Bold
  • QString 的最大大小

    我在 Ubuntu 16 04 64 位架构上使用 Qt 5 9 我有一个要求 我需要从一个文件中获取输入 该文件的字符范围在 10 8 范围内 不幸的是 将文件分成几部分并进行处理并不是一种选择 因为我需要文件中的全部数据来操作我的代码
  • 如何使用单个 Service Worker 来安装多语言 Angular PWA?

    我已经准备了本地化语言版本的应用程序 为此 我使用了原生 Angular i18n 模块 它准备了两个应用程序包 每个包都有适当的语言 该应用程序的每个版本都可以在我的 nginx 服务器上的单独位置下使用 myapp com en mya
  • Indy 服务器支持 SSL 2,但不应该

    印地德尔福 10 1 柏林 我的客户检查了 HTTPS 连接 使用 Qualys SSL Labs 该报告指出 此服务器支持 SSL 2 以及其他警告 但我猜它们与此相关 使用的代码如下 SSLIOhandler TIdServerIOHa
  • mget 无法像 get 一样获取原始函数

    我可以用get获得原始函数 例如 get Primitive 然而 mget failed mget Error value for not found 为什么 如何解决这个问题 默认为get是使用inherits TRUE 我认为 基于文
  • 获取 ToolStripDropDown 对象的下拉状态

    尽管查看了几次 我在文档中找不到任何返回下拉列表是否打开的简单状态的内容 我想为工具条子菜单创建一个单击事件 该事件将根据其状态打开或关闭项目下拉列表 我可能会忽略它 因为它看起来是一个基本的方法 on the 工具栏下拉菜单 http m
  • 无边框窗口和桌面尺寸相同时闪烁

    我正在尝试创建一个充满屏幕的无边框窗口 http pcgamingwiki com wiki Glossary 3aBorderless fullscreen windowed带有 OpenGL 视口 问题是 当我将窗口和视口设置为与桌面大
  • CI 服务器比较? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在寻找不同的比较持续集成 http en wikipedia org wiki Continuous integration CI 服务器
  • 如何并行执行 2 个 Observable,忽略它们的结果并执行下一个 Observable

    我必须并行执行 2 个 observable 不关心它们的输出 当它们都完成时 gt 运行另一个 observable 这是我的解决方案 但我觉得还有更好的解决方案 rx Observable