我目前正在使用 RxJS Observables/Subscription 来执行 HTTP 请求,如下所示的代码类似:
this.waiting = true;
this.doSomething().subscribe(
(result) => {
this.waiting = false;
this.showResult= true;
}
);
我真正想做的,只是在预定的时间长度内将 this.waiting 设置为 true。换句话说,只有当 Observable 在 30 秒内没有返回时,你才是真正的“等待”。想知道如何实现这一目标。我看到有一个可用的 .timer 方法,但它只会在该时间长度后开始订阅?
最佳答案
看看timeout()
和 timeoutWith()
运营商。这些没有文档,但您可以从它们的参数中猜出它们的作用。
timeout()
运算符在一段时间不活动后发送一个错误
通知。
timeoutWith()
我想让你在一段时间不活动后用另一个 Observable 替换源 Observable。
最后,如果你想避免这两个运算符,你可以使用 Observable.race
,它只在内部订阅第一个发出的 Observable:
Observable.race(Observable.timer(30 * 1000).take(1), this.doSomething())
关于javascript - RxJS 检测长时间运行的订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44842213/