【问题标题】:Rxjava timeout operator, only take into account items emitted from a specific pointRxjava 超时运算符,仅考虑从特定点发出的项目
【发布时间】:2020-06-05 02:57:20
【问题描述】:

我有一个带有一组运算符的 rxjava 可观察链。假设我有源 Observable(总是每分钟发射一次)、执行网络请求的算子 B 和超时算子。我希望超时运算符只考虑运算符 B 发出的项目,但忽略源 Observable 发出的项目。我想要的是结束订阅,如果在一小时内,操作员 B 没有发出任何项目,例如服务器已关闭,并且没有结果发送给订阅者。

例子:

Observable.timer(1, TimeUnit.SECONDS)
   .flatMap { performNetworkRequest() }
   .timeout(1, TimeUnit.HOUR)

所以我的想法是在没有服务器响应的一小时后结束这个计时器。但是超时操作符不是这样工作的,因为它被重置一次,计时器 observable 每分钟发出一个新项目。

【问题讨论】:

    标签: android timeout rx-java rx-java2


    【解决方案1】:

    医生是这么说的

    如果 Observable 在指定的时间范围内未能发出任何项目,Timeout 运算符允许您使用 onError 终止来中止 Observable。

    -在这里你每分钟都在发射项目,所以它不能像你想要的那样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2010-10-23
      • 2020-07-27
      • 2017-12-10
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多