【发布时间】:2019-12-04 12:07:37
【问题描述】:
我正在尝试从 Rxjava 流返回错误,但它在返回类型中显示错误。
这里是代码。
private fun getCategories(): Flowable<Resource<List<Category>>> {
return shopRepo.getCategories()
.subscribeOn(Schedulers.io())
.onErrorReturn { Resource.error(it.message) }
.doOnSubscribe { Resource.loading(true) }
.map{
Resource.success(it)
}
}
fun observeCategories(): LiveData<Resource<List<Category>>> {
return LiveDataReactiveStreams.fromPublisher(getCategories())
}
}
这是我的资源类
data class Resource<out T>(val status: Status, val data: T?, val message: String?) {
enum class Status {
SUCCESS,
ERROR,
LOADING
}
companion object {
fun <T> success(data: T?): Resource<T> {
return Resource(SUCCESS, data, null)
}
fun <T> error(msg: String, data: T?): Resource<T> {
return Resource(ERROR, data, msg)
}
fun <T> loading(data: T?): Resource<T> {
return Resource(LOADING, data, null)
}
}
}
我找不到有关此问题的任何参考资料。
【问题讨论】:
-
抛出异常?
-
onErrorReturn期望返回类型与shopRepo.getCategories()相同。如果你在map之后移动 onErrorReturn 的链调用,它应该可以工作。
标签: android rx-java2 android-livedata