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

RxJava:可观察到的冷热结合

毋弘光
2023-03-14

我有两个可观察到的。它们都是可观察的类型

一种是冷的,称为初始值可观察(initialValueObservable),它通过可观察(Observable)从项目列表中发出。from()。

另一个是名为“valueUpdateObservable”的热门主题,它是一个发布主题,在出现新项目时通知订阅者。

在客户端中,我想同时订阅这两个,因此我从firalValue观察value Update观察发布的更新中获取初始值。我最初的方法是合并它们,但我认为这不起作用,因为初始值值观察将在完成上发送,此时值更新观察发出的新项目不会到达。


共有2个答案

姚星河
2023-03-14

如果有人来找这个,这里有一个例子

Observable.concat(
    coldObservable.doOnComplete{ () -> Log.d(TAG, "cold observable completed"); },
    hotObservable.doOnComplete{ () -> Log.d(TAG, "hot observable completed") }
.subscribe()

将记录所有coldObservable的值,然后是“cold observable completed”,然后是所有hotObvservable的值。假设“hot observable completed”类似于没有完成状态的单击侦听器,则不会记录它

徐瑞
2023-03-14

当您进行合并时,仅当所有源观测值(在本例中为两者)都已完成时,才会发送onComplete。

以(c#Rx.NET)代码为例:

Observable
    .Return(42L)
    .Merge(Observable.Interval(TimeSpan.FromSeconds(1.0)).Take(3))
    .Subscribe(x => Console.WriteLine(x));

它产生:

42
0
1
2

如果RxJava做了什么不同的事情,我会感到惊讶。

 类似资料:
  • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

  • 问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。

  • 我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成

  • 在android 6.0.1 Samsung s6 Edge+上的测试 当device screen脱机并从debug中拔出时,可观察到的只是停止发射项目。如果设备打开,则开始发射对象。另一个问题是,在停止接收项目之前,我会按照相同项目的顺序随机地得到2/3个重复调用 ____________________________edit_________________________________

  • 我在创建一个将返回对象列表的可观察对象时遇到了麻烦。我有一个ID列表,想对我的数据库提出一个请求。在这种情况下,我使用的是Firebase。当得到一个结果时,我希望将这些对象中的每一个编译成一个列表,然后返回该列表。我需要在返回之前等待所有的对象都返回。我在我的视图模型反序列化器类中这样做。这是我的代码。 有几种方法可以从firebase数据库中返回数据,我可以返回Documentsnapshot