首页 > 解决方案 > 多个重复数据点 - Angularjs Rxjs 订阅未按预期工作

问题描述

我已经为此苦苦挣扎了几天,似乎无法理解我做错了什么。我必须使用 SOMENUMBERHERE 访问一个看起来像这样的 URL,可能在后端添加了新点。

https//myURL/globalData/SOMENUMBERHERE/DATAFORNUMBERSELECTED

我可以用我正在做的事情来访问它,但输出会多次提取相同的数据。应该只有 50 个数据点,但我收到接近 100 个。我不熟悉如何在前端逐步执行代码,所以我一直在尝试 console.log 一切。我似乎无法找到解决方案。

我在我的 service.ts 文件中有这个从服务器获取数据。获取数字列表的第一种方法和将该数字添加到 url 末尾的第二种方法

getData(): Observable<any>{
   return this.http
    .get<any>(this.myGlobalChainURL)
    .pipe(res => res);

    }

getGlobalData(resultNum): Observable<any>{

  return this.http
    .get<any>(this.myGlobalChainURL + resultNum)
    .pipe(res => res);
}

我填充图表的代码如下所示:

this.apiService.getData().subscribe(result => {
  result.forEach(element => {
    this.apiService.getGlobalData(element).subscribe(res => {

      this.timeStamp.push(moment(res.Timestamp * 1000).format('HH:MM'));
       this.systemSix.push(res.FStates.LStates[0].Forms);

      //pass values to chart and draw it in chart function
      this.createChart(this.timeStamp, this.systemSix);

  });

});
});

我不明白的是,这确实有效,但由于某种原因,我得到了重复的数据点。当我记录时间戳时,我得到的输出看起来像这样。

我收到的回复:

20:01, 20:01, 22:01, 23:01

预期反应:

20:01, 22:01, 23:01

如果您能指出我正确的方向,我将不胜感激。

标签: angulartypescriptrxjs

解决方案


推荐阅读