如何在 RxAndroid 中将 Observable 映射到 Single?
How can I map Observable to Single in RxAndroid?
我有Observable<State> state
和这段代码`
Flowable<.> loadData(){
return state.toFlowable(Latest).flatmap(this::fetchData()) }`
其中 fetchData()
return Flowable
但是如果我们有 fetchData()
和 Single
return 类型怎么办
和 loadData() return 单<.>
如何将 Observable 映射到 Single?
您可以使用 .take(1)
获取第一个项目并使用以下方法转换为单个项目:
.single(defaultItem)
.singleElement()
.singleOrError()
这是一个可行的解决方案:
loadDataSingle()
.subscribeBy(
onSuccess = { println("This is your single data $it") },
onError = { println("We have a problem") }
)
fun loadDataSingle(): Single<String> {
return getState().singleOrError()
.flatMap {
fetchDataSingle()
}
}
fun fetchDataSingle(): Single<String> {
return Single.just("This is fetching your single data")
}
或者您可以这样做Single.fromObservable并将调用包装在其中
fun loadDataSingle(): Single<String> {
return Single.fromObservable(getState())
.flatMap { fetchDataSingle() }
}
我有Observable<State> state
和这段代码`
Flowable<.> loadData(){
return state.toFlowable(Latest).flatmap(this::fetchData()) }`
其中 fetchData()
return Flowable
但是如果我们有 fetchData()
和 Single
return 类型怎么办
和 loadData() return 单<.>
如何将 Observable 映射到 Single?
您可以使用 .take(1)
获取第一个项目并使用以下方法转换为单个项目:
.single(defaultItem)
.singleElement()
.singleOrError()
这是一个可行的解决方案:
loadDataSingle()
.subscribeBy(
onSuccess = { println("This is your single data $it") },
onError = { println("We have a problem") }
)
fun loadDataSingle(): Single<String> {
return getState().singleOrError()
.flatMap {
fetchDataSingle()
}
}
fun fetchDataSingle(): Single<String> {
return Single.just("This is fetching your single data")
}
或者您可以这样做Single.fromObservable并将调用包装在其中
fun loadDataSingle(): Single<String> {
return Single.fromObservable(getState())
.flatMap { fetchDataSingle() }
}