Observable#single() 和 Observable#toSingle() 之间的区别?
Difference between Observable#single() and Observable#toSingle()?
我偶然发现了这些方法,从我从文档中得到的信息来看,它们做的事情几乎完全相同。查看代码,他们显然做了不同的事情。从初学者 single()
returns 一个 Observable
(为什么?)而 toSingle() 有效地 returns 一个 Single
.
我对反应世界的有限了解让我想知道,为什么这两种方法都存在?它们有什么区别?他们中的任何一个应该使用另一个吗?
其中任何一个或两个 immediately
将 Observable
转换为 Single
,如果它没有发出任何项目,它会抛出错误?还是等待事件发出?
另一件让我感到困惑的事情是他们的大理石图是不同的
(toSingle and single),但他们的文档说他们的行为应该完全相同,特别是他们应该表现得像 single()
弹珠图。
我相信两者是相同的,都将在上游完成时产生 1 个项目,如果提供超过一个项目(如文档所述),两者都会产生错误,因此使用它们的安全方法是 observable.take(1).toSingle() 或者 observable.take(1).single()
why both these methods exists?
single()
是原始 ReactiveX 运算符集的一部分。 toSingle()
是后来在 Single
引入 RxJava 时添加的。
What differences do they have?
它们 return 不同的碱基反应性 class。 single()
保持 Observable
并且 toSingle()
转换为 Single
。
Should any of them use the other?
取决于您要使用的类型以及您是否打算尽快迁移到 RxJava 2.x。在 RxJava 2 中,没有 toSingle
和(大多数)运算符现在 return 更合适的类型:single(T)
、singleOrError()
或 singleElement()
.
their marble diagrams are different
toSingle
的弹珠不包含错误情况,并且 Single
类型的时间图与 Observable
.[=28= 的时间图在表示随时间变化的事件方面略有不同。 ]
我偶然发现了这些方法,从我从文档中得到的信息来看,它们做的事情几乎完全相同。查看代码,他们显然做了不同的事情。从初学者 single()
returns 一个 Observable
(为什么?)而 toSingle() 有效地 returns 一个 Single
.
我对反应世界的有限了解让我想知道,为什么这两种方法都存在?它们有什么区别?他们中的任何一个应该使用另一个吗?
其中任何一个或两个 immediately
将 Observable
转换为 Single
,如果它没有发出任何项目,它会抛出错误?还是等待事件发出?
另一件让我感到困惑的事情是他们的大理石图是不同的
(toSingle and single),但他们的文档说他们的行为应该完全相同,特别是他们应该表现得像 single()
弹珠图。
我相信两者是相同的,都将在上游完成时产生 1 个项目,如果提供超过一个项目(如文档所述),两者都会产生错误,因此使用它们的安全方法是 observable.take(1).toSingle() 或者 observable.take(1).single()
why both these methods exists?
single()
是原始 ReactiveX 运算符集的一部分。 toSingle()
是后来在 Single
引入 RxJava 时添加的。
What differences do they have?
它们 return 不同的碱基反应性 class。 single()
保持 Observable
并且 toSingle()
转换为 Single
。
Should any of them use the other?
取决于您要使用的类型以及您是否打算尽快迁移到 RxJava 2.x。在 RxJava 2 中,没有 toSingle
和(大多数)运算符现在 return 更合适的类型:single(T)
、singleOrError()
或 singleElement()
.
their marble diagrams are different
toSingle
的弹珠不包含错误情况,并且 Single
类型的时间图与 Observable
.[=28= 的时间图在表示随时间变化的事件方面略有不同。 ]