javascript - RxJS 检测长时间运行的订阅

标签 javascript rxjs

我目前正在使用 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/

相关文章:

Angular Jasmine 测试无法触发使用 fromEvent rxjs 运算符创建的 Observable

javascript - 在 Node.JS 中向 http.get 传递参数

javascript - 用于操作选项卡的 Javascript 的 Chrome/FF API

javascript - 测试类无法读取consul配置

javascript - 无法获取对象中的值(Javascript)

angular - 如何将结构化数据转化为可观察数据?

javascript - 结果为 false 时重试订阅

javascript - D3js - 将数据绑定(bind)到多个圆环图

angular - 如何调试 Angular2/Typescript 中的 Observable 值?

javascript - 将 websocket 事件转换为 observables