У меня есть приложение, которое вызывает API каждые x секунд / минут, чтобы получить самые свежие данные. Однако у меня возникла проблема, при которой данные продолжают удваиваться при refre sh. Как я могу очистить данные перед получением самых последних значений? api-call.service.ts
private _earthquakeData$ = new ReplaySubject<EarthquakeResponse>(1);
constructor(private readonly httpClient: HttpClient) {
}
getEarthquakeData(): Observable<EarthquakeResponse> {
// return the subject here
// subscribers will will notified when the data is refreshed
return this._earthquakeData$.asObservable();
}
refreshEarthquakeData(): Observable<void> {
return this.httpClient.get<any>(this.url).pipe(
tap(response => {
// notify all subscribers of new data
this._earthquakeData$.next({
geometries: response.features.map(x => x.geometry),
properties: response.features.map(x => x.properties)
});
})
);
}
и я использую этот сервис в моем app.component.ts
private destroyed$ = new Subject();
constructor(private readonly earthquakeService: EarthquakeService) {
}
ngOnInit() {
this.earthquakeService.getEarthquakeData().pipe(
takeUntil(this.destroyed$)
).subscribe(data => {
this.data = data;
});
timer(0, 10000).pipe(
takeUntil(this.destroyed$),
tap(() => this.refresh = true),
switchMap(() =>
this.earthquakeService.refreshEarthquakeData())
).subscribe(() => {
console.log('refreshed');
this.refresh = false;
});
this.today = new Date();
}
onRefresh() {
this.refresh = true;
console.log('refreshed');
this.earthquakeService.refreshEarthquakeData().subscribe(() => {
this.refresh = false;
});
}
ngOnDestroy() {
this.destroyed$.next();
this.destroyed$.complete();
}
в моем other.component.ts
ngOnInit() {
this.earthquakeService.getEarthquakeData().subscribe(data => {
this.data = data;
this.generateMapData();
});
}
generateMapData() {
for (const g of this.data.geometries) {
const tempData: any = {
latitude: g.coordinates[0],
longitude: g.coordinates[1],
draggable: false,
};
this.mapData.push(tempData);
}
console.log(this.mapData);
}
это mapData [], который удваивается в размере каждый раз, когда вызывается API. Любая помощь / информация будет принята с благодарностью. HS