Java RX中的Single vs Observable

Xit*_*rum 13 java reactivex

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

在我目前的用例中,我有很多好处,我有多个执行,每个都只返回一个结果.因此,如果我从使用Observable变为Single,那将是有意义的.

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

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

  1. 使用Observable进行每次执行,虽然我知道执行只返回1个结果.

要么

  1. 每次执行都使用Single,只有在稍后需要连接流时才将它们转换为Observable?

谢谢.

Leo*_*der 5

单个意味着在您期望单个值响应时使用.
另一方面,可观察的是用于流或矢量值.
因此,就Reactive Pattern而言,只要你期望只有1个结果并且不想操纵数据就足够使用Single


Cha*_*Hey 3

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

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

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

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