【问题标题】:How to delay RxJava Subscription on both Success and Error?如何在成功和错误时延迟 RxJava 订阅?
【发布时间】:2018-07-13 22:51:20
【问题描述】:

无论错误或成功,我都想将订阅延迟到 XXXX 时间发送。使用以下代码,延迟仅适用于成功场景。请帮助我,以便它可以一直等待 XXXX 时间。

serviceRepository.getService()
                           .retry(0)
                           .map(value -> {
                               total = XXXX;
                               return value;
                           })
                           .observeOn(schedulerProvider.mainThread())
                           .delaySubscription(total, TimeUnit.MILLISECONDS)
                           .subscribeWith(return new DisposableSingleObserver<ServiceResponse>() {

                   @Override
                   public void onSuccess(ServiceResponse serviceResponse) {


                   }

                   @Override
                   public void onError(Throwable e) {

                   }
               });

【问题讨论】:

  • 按时间延迟订阅永远不会失败。我不确定你想在这里实现什么。 retry(0) 也不会重试。
  • 如果有异常则不会触发map的回调。
  • Anatolii 如果我想延迟成功和错误,那还有什么选择。 XXXX 是动态的,所以我需要有与 map 等价的东西

标签: android rx-java2


【解决方案1】:

delaySubscription 移到retry 调用之前。 RxJava 运算符向上操作,因此您的延迟适用于重试的原始订阅,但不适用于错误情况下的附加订阅,因为重试只知道上游存在的内容。

【讨论】:

  • 感谢您的回复。但是注意到地图不会被错误调用,但我想调用地图,因为我 XXX 是动态的,我根据网络调用需要多长时间来计算。如果网络调用需要更长的时间,则 XXXX 的值会短得多
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
相关资源
最近更新 更多