我正在订阅hot observable,然后将timeout
运算符应用于它,但是我不想在抛出TimeoutException
时取消订阅,只生成特殊项目(我知道该源最终会发出新的物品)。我怎样才能做到这一点?
我正在尝试将超时与onErrorReturn
结合使用,但这又会导致onComplete
对订阅者进行调用。
答案 0 :(得分:0)
发布,暂停和重试(改编自my older answer):
Observable<Long> source =
Observable.just(100L, 200L, 500L, 1000L, 5000L, 5500L, 6000L)
.flatMap(v -> Observable.timer(v, TimeUnit.MILLISECONDS).map(a -> v));
source.publish(co ->
co.timeout(750, TimeUnit.MILLISECONDS,
Observable.just(-1L)
.concatWith(Observable.error(new RuntimeException()))
)
.retry()
).blockingForEach(System.out::println);