没有取消订阅源的 RxJava 超时
RxJava timeout without unsubscribing from source
我正在订阅 hot observable,然后对其应用 timeout
运算符,但是我不想在抛出 TimeoutException
时取消订阅,只生成特殊项目(我知道来源最终会发出新的物品)。我怎样才能做到这一点?
我正在尝试将超时与 onErrorReturn
结合使用,但这又会导致 onComplete
调用订阅者。
发布、超时和重试(改编自):
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);
我正在订阅 hot observable,然后对其应用 timeout
运算符,但是我不想在抛出 TimeoutException
时取消订阅,只生成特殊项目(我知道来源最终会发出新的物品)。我怎样才能做到这一点?
我正在尝试将超时与 onErrorReturn
结合使用,但这又会导致 onComplete
调用订阅者。
发布、超时和重试(改编自
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);