RxJS: http requests on delay



我只是将我的一个应用程序迁移到Angular 2,随之而来的是RxJS。

我想每 5 秒从服务器刷新一次数据。起初我想做这样的事情:

Observable.timer(0,5000).flatMap(() => this.http.get(url))

但是,如果 http 请求花费的时间超过 5 秒,则会发送另一个请求。我希望它在 http 请求完成后等待 5 秒,而不是在创建后等待。

您可以使用

expand运算符在源发出项目时创建新的可观察量。

let myRequest = this.http.get(...);
let pollingSubscription = myRequest
 .expand(() => Observable.timer(5000).flatMap(() => myRequest));
 .subscribe();

用于展开的文档

Litte 有点跑题了,但也许你应该研究一下类似 LongPolling 的东西

您可以

采用的一种方法是

RequestGet(){
     this.http.get(url)
          .subscribe(e=>{
              // check if response get or not properly
              // if yes call another method
              this.againRequest();
          })
  }
  againRequest(){
    setTimeout(e => {
      this.RequestGet()
    }, 5000)
  }

最新更新