问题描述
我有Observable<State> state
和这段代码`
Flowable<.> loadData(){
return state.toFlowable(Latest).flatmap(this::fetchData()) }`
其中fetchData()
返回Flowable
但是如果我们有fetchData()
且返回类型为Single
,该怎么办
和loadData()返回Single
如何将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() }
}