【发布时间】:2021-09-06 15:24:37
【问题描述】:
我正在尝试在 Angular 应用程序中获取传单地图的数据。对于每个缩放级别,我需要不同的分辨率数据,这就是为什么在 moveend 上我再次调用后端。
map.component
// Every time a movement is done on the map the calls are done again.
this.map.on('moveend', () => {
this.mapService.drawHeatMap();
});
map.service.ts
public drawHeatMap(): void {
this.fetchData().subscribe((data) => {
// DO STUFF WITH DATA
});
}
private fetchData(): Observable<Leaflet.HeatLatLngTuple[]> {
return this.http.get<ResponseType>(URL).pipe(
map(({ data }: ResponseType) => {
return data.map((data: any) => {
// PARSE DATA
});
})
);
}
在测试过程中,我发现滚动进出很多会使对我的 API 的调用堆积起来,这是我想要避免的。
当我尝试使用 switchMap() 取消挂起的呼叫时,我没有得到想要的结果,因为呼叫不相同...
来自两个不同调用的请求 URL 示例:
.../api/ZoomLevel=10&swLong=3&neLong=5&swLat=50&neLat=51
.../api/ZoomLevel=11&swLong=2&neLong=4&swLat=49&neLat=50
帮助取消之前的通话虽然不相同将不胜感激。
【问题讨论】:
标签: angular typescript rest rxjs