我只是将我的一个应用程序迁移到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)
}