【问题标题】:Android: Apollo subscription with RxJava2Android:使用 RxJava2 订阅 Apollo
【发布时间】:2019-05-19 17:02:32
【问题描述】:

我在 Apollo 中使用 Rxjava2 订阅,如下所示

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

  // on success

}, {
  // on failure
})

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

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

提前致谢。

【问题讨论】:

    标签: android rx-java2 apollo-client apollo-android


    【解决方案1】:

    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))
    );
    

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

    【讨论】:

    • 'Rx2Apollo.from(someApolloCall)' 是可流动的,不可观察的!我应该用 flowable 替换你的答案中的 observable 吗?
    • 你能提供一些代码吗?不确定 someApolloCall 是什么样的,但是可以用 Flowable 替换。
    • 你能解释一下如何在 kotlin 中写这个吗,从那以后我一直在尝试买面孔,并出现错误
    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2020-04-23
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多