使用retrofit2 + rxjava嵌套请求并忽略子请求中的错误

时间:2016-06-21 01:14:32

标签: android rx-java retrofit2

我使用retrofit2和我学习RxJava(与Retrolambda一起)。我试图实现以下流程:

  1. 获取用户列表
  2. 为每个用户,获取给定user_id的用户详细信息。
  3. 返回具有详细信息的用户列表。
  4. 到目前为止,这是我的代码:

    getUsers().flatMapIterable(users -> users)
    flatMap(user -> getDetailInfo(user.getID()
            .doOnNext(detailInfo -> user.setDetailInfo(detailInfo))
            .map(detailInfo -> user))
    .toList().subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())
    subscribe(users -> {}, error -> {});
    

    问题是当getDetailInfo给出404响应时,observable进入错误范围,即使getUsers给出200响应。只要getUsers提供200响应,如何将响应输入到用户范围?

    希望我已经足够清楚了。 谢谢

1 个答案:

答案 0 :(得分:2)

如果您想避免404破坏您的流,您应该使用onErrorResumeNext将您的错误转换为默认响应,例如null,然后即使链接的请求返回错误,您的流也将继续存在。