轮询Angular2中的更新

时间:2017-03-02 18:24:20

标签: angular

我正在尝试使用Angular2前端轮询数据库中的更新条目。我能够成功地进行轮询,但是在每个轮询请求中,响应将包括DB表中的整个对象列表,从而创建一些非常昂贵的轮询请求。我希望能够跟踪我已经获得的内容,并且只是轮询更新。

我最初的想法只是跟踪对象ID,并且只是继续请求ID大于当前最高ID。问题是我不知道如何使Observable.interval使用我更新的ID值更新请求。

this.incidentsService
  .loadIncidentsWithIdGreaterThan(this.highestId)
  .subscribe((incidents) => {
    this.incidents = incidents;
    this.highestId = incidents[this.incidents.length - 1].id;    
  });

loadIncidentsWithIdGreaterThan(id: number) : Observable<Incident[]> {
return Observable.interval(2000)
  .switchMap(() => this.http.get(this.url + "/idGreaterThan/" + id)
    .map((data) => data.json() as Incident[]));
}

当我进入chrome控制台时,我可以看到我们仍然获得所有数据库对象,并且轮询请求仍然使用“1”表示ID而不是更新。有没有办法可以解决这种或不同的策略?

0 个答案:

没有答案