RxJava引入了Single <t>。如何将Observable <t>转换为Single <t>?

时间:2016-04-14 15:43:42

标签: rx-java observable

RxJava最近推出了Single。有没有办法将已经存在的Observable(几乎是单个)转换为Single而不修改原始observable的源?

例如,我有一个api服务类,其中包含一个返回Observable的方法 - 它本质上是从远程资源中获取用户。说我无法修改服务。我想在其他地方消费,但返回单身。我该怎么做?

捏更多背景

RxJava最近引入了Single的概念,它或多或少是一个Rx友好的简单回调(即一个Observable发出一个对象或一个错误)(在这里阅读更多关于它的信息 - http://reactivex.io/documentation/single.html

4 个答案:

答案 0 :(得分:30)

注意:这是针对RxJava 1.请参阅下面/上面的其他答案:Rx2:)

增加了2种新的便利方法来完成这件事。

toSingle()将发出单个项目的Observable转换为发出该项目的Single

toObservable将Single转换为一个Observable,它发出Single发出的项,然后完成

(来源:http://reactivex.io/documentation/single.html

答案 1 :(得分:24)

我认为另一个答案已经过时了。您应该检查以下方法。

singleOrError:如果源超过1项,则发出唯一的元素,IndexOutOfBoundsException;如果源为空,则发出NoSuchElementException。

firstOrError:如果源为空,则发出第一​​个元素或NoSuchElementException。

lastOrError:如果源为空,则发出lastelement或NoSuchElementException。

elementAtOrError:发出indexth元素或NoSuchElementException。

此页面上的更多信息:https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0

答案 2 :(得分:15)

rxjava2 中,您可以使用Single.fromObservable()

答案 3 :(得分:0)

https://github.com/apollographql/apollo-android/blob/main/apollo-rx2-support/src/main/java/com/apollographql/apollo/rx2/RxJavaExtensions.kt

ApolloClient有一个扩展。

rxQuery为您提供Observable rxMutate为您提供Single

再见其他人。