我有一个带有一组运算符的rxjava可观察链。假设我有源Observable(总是每分钟发出项目),执行网络请求的操作员B和超时操作员。我希望超时运算符仅考虑运算符B发出的项目,而忽略源Observable发出的项目。我想要的是终止订阅,如果例如在服务器关闭的情况下,一口气没有从运营商B发出任何项目,并且没有向订户发出任何结果。
示例:
Observable.timer(1, TimeUnit.SECONDS)
.flatMap { performNetworkRequest() }
.timeout(1, TimeUnit.HOUR)
因此,我的想法是在一个小时后没有服务器响应的情况下结束此计时器。但是超时操作符不是那样工作的,因为重置它是可观察到的计时器每分钟发出一个新项。
这就是Doc所说的
如果该Observable在指定的时间段内未发出任何项目,则Timeout运算符允许您终止具有onError终止的Observable。
-您在这里每分钟发射一次物品,因此它无法正常工作。