我想每 5 秒从一个 http 链接中点击并显示一次,似乎使用 angular2,observable 是可行的方法吗?
getPhaseVotes(issue: string) {
return this.http.get(this.URL + 'issue/' + issue + '/getPhaseVotes')
.subscribe(data => this.phase_votes = data.json(),
err => console.log(err),
() => this.getStatus(issue));
}
我应该如何每 5 秒更新一次?
最佳答案
您可以使用 Observable
的 interval
运算符:
@Injeactable()
export class SomeService {
constructor(private http:Http) {}
getPhaseVotes(issue: string) {
return Observable.interval(5000).flatMap(() => {
return this.http.get(this.URL + 'issue/' + issue + '/getPhaseVotes')
.map(res => res.json());
});
}
}
这样您需要调用一次 getPhaseVotes
方法并订阅它。每 5 秒,将透明地执行一个 HTTP 请求,并在订阅的回调中提供结果:
@Component({
(...)
})
export class SomeComponent {
constructor(private service:SomeService) {
this.service.getPhaseVotes('someissue')
.subscribe(data => this.phase_votes = data,
err => console.log(err),
() => this.getStatus(issue));
}
}
本文可以在其“投票”部分为您提供更多提示:
关于javascript - 定期更新 Angular2 中的 Observable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36086596/