Java RX中的Single vs Observable

时间:2016-03-30 16:08:15

标签: java reactivex

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

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

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

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

  1. 对每次执行使用Observable,虽然我知道执行只返回1个结果。
    1. 每次执行都使用Single,只有在稍后需要连接流时才将它们转换为Observable?
    2. 谢谢。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

出于性能原因,我无法找到很好的文档,但是我可以逻辑地解释为什么在可能的情况下使用Single是更好的做法(尽管当涉及到主要时你会遇到杂草重构)。

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

也许另一个开发者可以权衡,但它背后的逻辑似乎是有道理的。

答案 2 :(得分:1)

在某些情况下,使Observable返回单个值(或错误)然后结束。这里有一个很好的解释:http://angusmorton.com/rx-single/