Rxjava超时运算符,仅考虑从特定点发出的项目

问题描述 投票:1回答:1

我有一个带有一组运算符的rxjava可观察链。假设我有源Observable(总是每分钟发出项目),执行网络请求的操作员B和超时操作员。我希望超时运算符仅考虑运算符B发出的项目,而忽略源Observable发出的项目。我想要的是终止订阅,如果例如在服务器关闭的情况下,一口气没有从运营商B发出任何项目,并且没有向订户发出任何结果。

示例:

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

因此,我的想法是在一个小时后没有服务器响应的情况下结束此计时器。但是超时操作符不是那样工作的,因为重置它是可观察到的计时器每分钟发出一个新项。

android timeout rx-java rx-java2
1个回答
0
投票

这就是Doc所说的

如果该Observable在指定的时间段内未发出任何项目,则Timeout运算符允许您终止具有onError终止的Observable。

-您在这里每分钟发射一次物品,因此它无法正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.