RxJS:http请求延迟

时间:2017-03-21 10:02:55

标签: angular ionic2 rxjs

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

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

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

但是如果http请求超过5秒,则会发送另一个请求。我希望它在http请求完成后等待5秒后才能创建。

2 个答案:

答案 0 :(得分:3)

当源发出项目时,您可以使用expand运算符创建新的Observable。

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

Docs for expand

Litte有点offtopic但也许你应该看看像LongPolling

这样的东西

答案 1 :(得分:1)

您可以采用的一种方法是

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)
  }