0

我在 Apollo 中使用 Rxjava2 订阅如下

Rx2Apollo.from(someApolloCall)
.observeOn(schedulerProvider.io())
.subscribeOn(schedulerProvider.ui())
.subscribe({

  // on success

}, {
  // on failure
})

网络正常时一切正常,但是当失去连接时,订阅失败并且不再重新连接?

在类似的情况下我应该如何重新连接,我一直在尝试使用 rxjava 操作retryWhen{}但徒劳无功!

提前致谢。

4

1 回答 1

0

retryWhen响应onError以重新订阅。

下面的代码重试次数有限(3次,每次尝试延迟5次)

response.retryWhen(errors ->
  errors
    .zipWith(Observable.range(1, 3), (n, i) -> i)
    .flatMap(retryCount -> Observable.timer((long) Math.pow(5, retryCount), TimeUnit.SECONDS))
);

此外,请确保您在 Android 主线程上订阅subscribeOn.Schedulers.io()observeOn(AndroidSchedulers.mainThread()执行发射(操作)。

于 2018-12-19T09:03:36.620 回答