【问题标题】:Periodically updating Observable value in Angular2定期更新 Angular2 中的 Observable 值
【发布时间】:2016-03-18 14:11:22
【问题描述】:

我想从 http 链接每 5 秒点击一次并显示一次,似乎使用 angular2,一个可观察的方法是要走的路吗?

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

【问题讨论】:

    标签: javascript events angular observable


    【解决方案1】:

    您可以使用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));
      }
    }
    

    本文的“投票”部分可以为您提供更多提示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2014-08-21
      • 1970-01-01
      • 2018-05-21
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多