在Angular2中轮询更新

在Angular2中轮询更新,angular,Angular,我正在尝试使用Angular2前端轮询数据库中的更新条目。我能够成功地使轮询工作,但是在每个轮询请求上,响应将包括DB表中的整个对象列表,从而创建一些非常昂贵的轮询请求。我希望能够跟踪我已经得到的信息,只需轮询更新 我最初的想法是只跟踪对象ID,只要求ID大于当前最高值。问题是我不知道如何使Observable.interval使用我更新的ID值更新请求的内容 this.incidentsService .loadIncidentsWithIdGreaterThan(this.highest

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

我最初的想法是只跟踪对象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[]));
}
this.incidents服务
.LoadIncidentSwithidCreateThan(此为highestId)
.订阅((事件)=>{
这.事件=事件;
this.highestId=incents[this.incents.length-1].id;
});
LoadIncidentSwithidCreateThan(id:编号):可观察{
可观测返回间隔(2000)
.switchMap(()=>this.http.get(this.url+“/idGreaterThan/”+id)
.map((data)=>data.json()作为事件[]);
}

当我进入chrome控制台时,我可以看到我们仍然获得所有的DB对象,轮询请求仍然使用“1”作为ID,并且没有更新。有没有一种方法可以绕过这个问题,或者针对这种类型的事情有一种不同的策略?

为什么你不能只做
.switchMap(()=>this.http.get(this.url+“/idGreaterThan/”+this.highestId)
而不是试图传递id?好的,这似乎可行,但这迫使我将所有代码都放在事件页面中,而我真的希望将部分代码放在事件服务中。我肯定有办法做到这一点吗?