如何传递 rxjava2 链调用中的第一个可抛出错误?
How to pass the first throwable error in rxjava2 chain calls?
我正在为我的网络和本地 api 链接呼叫。万一网络 api 无法获取数据,我将通过本地 api 调用捕获它。但是,在网络和本地 api 都失败的情况下,我想向用户显示来自网络 api 而不是本地的错误。这是我的:
remoteSource.fetchData()
.onErrorResumeNext(e -> localSource.fetchData())
.doOnSuccess(this::saveData)
我能想到的解决方案是将onErrorResumeNext
中捕获的throwable保存在链调用之外的单独变量中。但是,我使用的是 MVP 架构,这意味着它位于 model
层内。只有最后一个错误会被 presenter
层捕获,这是本地源的错误。
您可以继续使用嵌套调用中的原始错误:
remoteSource.fetchData()
.onErrorResumeNext(e ->
localSource.fetchData()
.onErrorResumeNext(f -> Single.error(e))
)
.doOnSuccess(this::saveData)
我正在为我的网络和本地 api 链接呼叫。万一网络 api 无法获取数据,我将通过本地 api 调用捕获它。但是,在网络和本地 api 都失败的情况下,我想向用户显示来自网络 api 而不是本地的错误。这是我的:
remoteSource.fetchData()
.onErrorResumeNext(e -> localSource.fetchData())
.doOnSuccess(this::saveData)
我能想到的解决方案是将onErrorResumeNext
中捕获的throwable保存在链调用之外的单独变量中。但是,我使用的是 MVP 架构,这意味着它位于 model
层内。只有最后一个错误会被 presenter
层捕获,这是本地源的错误。
您可以继续使用嵌套调用中的原始错误:
remoteSource.fetchData()
.onErrorResumeNext(e ->
localSource.fetchData()
.onErrorResumeNext(f -> Single.error(e))
)
.doOnSuccess(this::saveData)