0

我正在链接我的网络和本地 api 的调用。如果网络 api 无法获取数据,我将使用本地 api 调用来捕获它。但是,在网络和本地 api 都失败的情况下,我想向用户显示来自网络 api 而不是本地的错误。这就是我所拥有的:

remoteSource.fetchData()
            .onErrorResumeNext(e -> localSource.fetchData())
            .doOnSuccess(this::saveData)

我能想到的解决方案是将捕获的 throwable 保存在onErrorResumeNext链调用之外的单独变量中。但是,我使用的是 MVP 架构,这意味着它在model层内。只有最后一个错误会被presenter本地源的错误层捕获。

4

1 回答 1

2

您可以在嵌套调用中恢复原始错误:

remoteSource.fetchData()
        .onErrorResumeNext(e -> 
              localSource.fetchData()
              .onErrorResumeNext(f -> Single.error(e))
        )
        .doOnSuccess(this::saveData)
于 2018-01-03T15:43:03.550 回答