El siguiente es mi archivo .ts para el componente de alarma y sobre HTML. Estoy usando un simple *ngFor sobre CriticalObject.siteList para mostrar los registros. Este no es el código original. Lo he simplificado, pero el problema al que me enfrento es que al hacer clic riguroso en el botón de actualización (activa la solicitud HTTP), la lista agrega nombres de sitios duplicados y eso no debería suceder. He oído hablar del tiempo de rebote, shareReplay y de intentar aplicar aquí, lo que ni siquiera tiene sentido aquí. NOTA: Tengo que activar la solicitud HTTP cada vez que se hace clic en el botón de actualización. Ansiosamente esperando ayuda.
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; }) } }) } } })Cometí un error tonto, soy nuevo en JavaScript, descubrí que no puede regresar de un ciclo forEach y es por eso que estaba obteniendo registros duplicados, la declaración de devolución en forEach actúa como una continuación en JavaScript.