如何在RxJava2中编译多个请求?

时间:2018-07-28 04:18:55

标签: android rx-java2

我想使用Rxjava 2来获取我的IP地址,我请求2个api(因为有时api有故障)

我想要:

  • 获取第一个成功请求返回的结果
  • 请求失败时不要跳转到错误
  • 如果两个请求均失败,它将获得默认值

我该怎么办。请帮我。

1 个答案:

答案 0 :(得分:1)

onError() / onErrorResumeNext() are your firends

有多种方法可以实现您所描述的内容,其中一种方法是:

getIpV1()
  .onErrorResumeNext(
    getIpV2().onErrorReturn(defaulValue)
  )

在这里,请求将一个接一个地运行。

要使其并行运行,请参见combineLatest()zip()

s1 = getIpV1().onErrorReturn(defaulValue)
s2 = getIpV2().onErrorReturn(defaulValue)
Observable.zip(s1, s2, {s1, s2 -> TODO("merge")})