我有一个 API 可以Observable
触发一个事件。
如果检测到 Internet 连接,我想返回一个Observable
每秒发出一个值的值,如果没有连接则延迟时间。defaultDelay
numberOfFailedAttempts^2
我尝试了很多不同的风格,我遇到的最大问题是retryWhen's
可观察的只评估一次:
Observable
.interval(defaultDelay,TimeUnit.MILLISECONDS)
.observeOn(Schedulers.io())
.repeatWhen((observable) ->
observable.concatMap(repeatObservable -> {
if(internetConnectionDetector.isInternetConnected()){
consecutiveRetries = 0;
return observable;
} else {
consecutiveRetries++;
int backoffDelay = (int)Math.pow(consecutiveRetries,2);
return observable.delay(backoffDelay, TimeUnit.SECONDS);
}
}).onBackpressureDrop())
.onBackpressureDrop();
有什么办法可以做我想做的事吗?我发现了一个相关的问题(现在找不到它正在搜索),但所采取的方法似乎不适用于动态值。