gpt4 book ai didi

java - 使用 Observable.timeout 超时后会发生什么?

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:07 26 4
gpt4 key购买 nike

我有一个 Observable 可以访问数据库并查询一些信息。我不希望我的 observable 执行时间超过 5 秒,因此我使用:

myObservable.timeout(5,second);

然后我也想处理错误通知,因此我使用:

myObservable.timeout(5,second).onError(return empty result);

然后我想知道 myObservable 中用来做数据库查询的代码会发生什么。它也会被终止,还是会继续运行? (这发生在 Java 原生 Future.get(timeLimit) 上)

最佳答案

举个例子:

Observable.interval(1, TimeUnit.SECONDS)
.timeout(10, TimeUnit.MICROSECONDS)
.onErrorReturn(e -> -1L)
.subscribe(System.out::println,
Throwable::printStackTrace,
() -> System.err.println("completed"));

timeout 运算符将发出错误。但先例运算符不会通知此错误。

运算符 onErrorReturn 会将您的错误转换为一个事件,然后完成您的流(并将其标记为已完成),然后您的源可观察对象将取消订阅。

这个取消订阅部分将运行一些代码,根据您的源可观察对象的编写方式,这些代码可能会停止您的请求,或者什么都不做,或者释放一些资源。

在您的情况下,它可能会在您的Future 上调用cancel 方法(根据Subscriptions 类)

关于java - 使用 Observable.timeout 超时后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36574107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com