通过单击刷新按钮(针对特定组件)Angular 5,我尽了最大努力停止在连续的http请求中复制数据



下面是我的报警组件的.ts文件,通过HTML,我使用一个简单的*ngFor over criticalObject.siteList来显示记录这不是我简化的原始代码,但我面临的问题是,在严格点击刷新按钮(触发HTTP请求(时,列表会添加重复的siteNames,这不应该发生。我听说过debounce time,shareReplay,并尝试在这里申请,这在这里甚至没有意义。注意:每次单击刷新按钮时,我都必须触发HTTP请求。急切地等待帮助。

criticalObject.siteList = [];
siteList = ["c404", "c432"];

onRefresh() {
this.criticalObject.siteList = [];
this.siteList.forEach(elem => {
getAlarmStatus(elem);
})
}
getAlarmStatus(item) {
critical_list = [];
alarmService.getAlarmStatusBySite(item.siteName).subcribe(data => {
if(data) {
// do some calculations
if(this.criticalObject.siteList.length === 0) {
this.criticalObject.siteList.push({
siteName = item.siteName;
})
}
this.criticalObject.siteList.forEach((elem, idx) => {
if(elem.siteName === item.siteName) {
return;
} else if(idx === this.criticalObject.siteList.length - 1) {
this.criticalObject.siteList.push({
siteName = item.siteName;
})
}
})
}
}
})

我犯了一个愚蠢的错误,我是JavaScript的新手,我发现你不能从forEach循环返回,这就是为什么我得到了重复的记录,forEach中的return语句在JavaScript中起到了continue的作用。

相关内容

  • 没有找到相关文章

最新更新