RxJava最近推出了Single。有没有办法将已经存在的Observable(几乎是单个)转换为Single而不修改原始observable的源?
例如,我有一个api服务类,其中包含一个返回Observable的方法 - 它本质上是从远程资源中获取用户。说我无法修改服务。我想在其他地方消费,但返回单身。我该怎么做?
捏更多背景
RxJava最近引入了Single的概念,它或多或少是一个Rx友好的简单回调(即一个Observable发出一个对象或一个错误)(在这里阅读更多关于它的信息 - http://reactivex.io/documentation/single.html)
答案 0 :(得分:30)
增加了2种新的便利方法来完成这件事。
toSingle()
将发出单个项目的Observable转换为发出该项目的Single
toObservable
将Single转换为一个Observable,它发出Single发出的项,然后完成
答案 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)
ApolloClient有一个扩展。
rxQuery
为您提供Observable rxMutate
为您提供Single
再见其他人。