angular 8使用最后一个http请求响应

angular 8使用最后一个http请求响应,angular,http,Angular,Http,我用的是角度8。在我的列表页面上,我有一些过滤器。在更改筛选器值时,将调用http请求。当用户过于频繁地更改过滤器时,会启动多个api请求。我的第一个请求比上一个请求花费更多的时间,所以在第页我得到了旧的筛选值。如何获取最新的请求-响应值 我试过切换地图 this.dataService.getData(params) .pipe(switchMap(response => of(response))) .subscribe(response => {

我用的是角度8。在我的列表页面上,我有一些过滤器。在更改筛选器值时,将调用http请求。当用户过于频繁地更改过滤器时,会启动多个api请求。我的第一个请求比上一个请求花费更多的时间,所以在第页我得到了旧的筛选值。如何获取最新的请求-响应值

我试过切换地图

this.dataService.getData(params)
      .pipe(switchMap(response => of(response)))
      .subscribe(response => {
        this.data = response;       
      });

switchMap
通过在提供新值时取消以前的请求来工作。在您的代码中,您每次都创建新的可观察对象,因此没有什么可以取消的

您需要在过滤器参数上有一个长时间运行的可观察对象。然后,您可以使用
switchMap
订阅此可观察结果,并从服务获取数据。 大概是这样的:

组成部分:

@组件({})
导出类ExampleComponent实现OnDestroy{
private readonly _paramsobject:BehaviorSubject)
  • distinctUntilChanged
    -仅当确实需要筛选时才发出请求 已更改()