例如,我有一个api服务类,其中包含一个返回Observable的方法,该方法基本上是从远程资源获取用户。假设我无法修改服务。我想在其他地方使用它,但要返回Single。我该怎么做? 更多背景信息 RxJava最近引入了Single的概念,这更或多或少是Rx友好的简单回调(即发出一个对象或错误的Observable)(在此处阅读更多信息 - http://reactivex.io/documentation/single.html)
我认为另一个答案已经过时了, 你应该检查以下方法.
singleOrError: 发出唯一的元素, 如果源包含多于一个item则抛出IndexOutOfBoundsException异常, 如果源为空则抛出NoSuchElementException异常.
firstOrError: 发出第一个元素, 如果源为空则抛出NoSuchElementException异常.
lastOrError: 发出最后一个元素, 如果源为空则抛出NoSuchElementException异常.
elementAtOrError: 发出索引为index的元素或NoSuchElementException异常.
更多信息请参见此页面: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0
新增了两个便利方法来实现此功能。
toSingle()
将发射单个项的Observable转换为发射该项的Single
toObservable
将Single转换为发射Single发出的项并随后完成的Observable
Single.fromObservable()
。有一个针对ApolloClient的扩展。
rxQuery
给你一个Observable<Response>
rxMutate
给你一个Single<Response>
还有其他的。