Java RX 中的 Single vs Observable

2022-09-03 07:04:52

在新版本中,reactiveX引入了Single,作为Observible http://reactivex.io/documentation/single.html

这很好,因为在我目前的用例中,我有多个执行,每个执行只返回一个结果。因此,如果我从使用可观察更改为单一,这将有意义。

但是,作为我的用例的一部分,对于上面的多次执行,我需要稍后将它们连接到一个可观察的流中(以获得上述所有执行的结果)。

所以现在我的问题是,在性能方面,什么更有益?

  1. 对每次执行使用 Observable,尽管我知道执行将仅返回 1 个结果。

  1. 对每次执行使用 Single,并且仅在以后需要连接流时才将它们转换为可观察?

谢谢。


答案 1

“单”是指在期望单个值响应时使用。
另一方面,可观察性将用于流或矢量值。
因此,就反应模式而言,如果您期望只有1个结果并且不想操纵数据,则使用Single就足够了


答案 2

据我所知,如果我完全理解你的情况,那么让 Singles 处理前面提到的多执行语句并将所述 Singles 与一个 Observerable 结合起来是有意义的。

出于性能原因,我找不到很好的文档来做到这一点,但我可以从逻辑上解释为什么在可能的情况下使用 Single 是更好的做法(尽管在进行重大重构时,您会陷入困境)。

答:考虑这样一种情况,即我们使用类似于您的情况的可观察量(我们知道它只会返回单个值)。对于 Single,我们的逻辑是在发出值后立即转到 OnSuccess 方法,而在 Observables 中,我们需要验证它是最后一个,然后调用 OnComplete。

也许另一个开发人员可以参与进来,但它背后的逻辑似乎是有道理的。


推荐