首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Observable#single()和Observable#toSingle()之间的区别?

Observable#single()和Observable#toSingle()之间的区别?
EN

Stack Overflow用户
提问于 2017-11-29 21:25:11
回答 2查看 256关注 0票数 0

我无意中发现了这些方法,从我从文档中得到的信息来看,它们所做的几乎是完全一样的事情。看代码,他们显然会做不同的事情。首先,single()返回一个Observable (为什么?)而toSingle()实际上返回一个Single

我对反应性世界的认识有限,我想知道,为什么这两种方法都存在?他们有什么不同?他们中的任何一个应该使用另一个吗?

它们中的任何一个或两个immediately是否将Observable转换为Single,如果没有发出任何项,则会引发错误?或者他们是在等待事件的发生?

另一件让我感到困惑的是,他们的大理石图是不同的(toSingle单人),但是他们的医生说他们的行为应该完全一样,特别是他们应该表现得像single()大理石图。

以下是文档:Observable#toSingle Observable#single

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-30 09:02:37

为什么这两种方法都存在?

single()是最初的ReactiveX操作符集的一部分。toSingle()是在Single引入RxJava之后添加的。

他们有什么不同?

它们返回一个不同的基类反应性类。single()保持ObservabletoSingle()转换为Single

他们中的任何一个应该使用另一个吗?

这取决于您想使用哪种类型,以及您是否计划很快迁移到RxJava 2.x。在RxJava 2中,没有toSingle,(大多数)操作符现在返回一个更合适的类型:single(T)singleOrError()singleElement()

他们的大理石图是不同的

toSingle的大理石没有错误大小写,而Single类型的时间图在表示事件的时间上与Observable略有不同。

票数 3
EN

Stack Overflow用户

发布于 2017-11-30 08:29:13

我相信两者是相同的,都将在上游完成时产生一个项目,如果提供了多个项目(如文档所述),两者都会产生错误,所以使用它们的安全方法是observable.take(1).toSingle(),或者实际上是observable.take(1).single()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47562084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档