javascript - 定期更新 Angular2 中的 Observable 值

标签 javascript events angular observable

我想每 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 秒更新一次?

最佳答案

您可以使用 Observableinterval 运算符:

@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/

相关文章:

http - Angular2.RC1 http observable 未传递给组件

javascript - 仅在 Safari 中 window.onerror 中出现 "Script Error."错误

javascript - 功能引用

javascript - AudioContext 没有暂停属性?

angular - RXJS 获取 ReplaySubject 的当前值

Angular 6 rxjs 管道不返回数据

javascript - 如何根据手势滚动网页。手部 Action

mysql - 插入时需要 mysql 事件的最佳解决方案解决方法?

c# - 隐藏扫描仪进度条窗口

.net - Winforms 中的 VB.Net UserControl 关闭事件