16

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

这很好,因为在我当前的用例中,我有多个执行,每个执行只返回一个结果。因此,如果我从使用 Observable 更改为 Single 将是有意义的。

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

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

  1. 每次执行都使用 Observable,尽管我知道执行只会返回 1 个结果。

或者

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

谢谢你。

4

3 回答 3

9

当您期望单个值响应时,应使用 Single。
另一方面,Observable 将用于流或向量值。
因此,就反应模式而言,使用 Single 就足够了,以防您期望只有 1 个结果并且不想操作数据

于 2017-05-23T15:02:32.087 回答
3

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

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

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

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

于 2017-01-19T19:33:13.667 回答
1

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

于 2017-04-08T10:19:30.180 回答