我只是将我的一个应用程序迁移到Angular 2并且随之而来的是RxJS。
我想每隔5秒从服务器刷新一次数据。起初我想做这样的事情:
Observable.timer(0,5000).flatMap(() => this.http.get(url))
但是如果http请求超过5秒,则会发送另一个请求。我希望它在http请求完成后等待5秒后才能创建。
答案 0 :(得分:3)
当源发出项目时,您可以使用expand
运算符创建新的Observable。
let myRequest = this.http.get(...);
let pollingSubscription = myRequest
.expand(() => Observable.timer(5000).flatMap(() => myRequest));
.subscribe();
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)
}