【问题标题】:How to pass the first throwable error in rxjava2 chain calls?如何传递 rxjava2 链调用中的第一个可抛出错误?
【发布时间】:2023-03-16 22:00:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: android rx-java2 rx-android android-mvp


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2017-10-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多