如何重复请求http?

How to make request http repeatedly?

我有一个取决于参数的 http 请求 this.parameters:

public getData() {
  this.httpClient.get<any>(`${this.URL_PATH}/getData`, {
       params: HttpParamsBuilder.buildQueryParams(this.parameters),
  });
}

我在模板中使用它:

{{ getData | async }}

参数可以在运行时在应用程序的某处更改。

如何在this.parameters发生变化时重复调用此方法?

我不想像这样污染组件:

this.parameters.changes().subscribe((data) => {
     this.serviceHttp.getData();
});

你是怎么解决这个问题的?

您可以使用 rxjs 运算符 switchMap(或 concatMap、mergeMap、exhaustMap 等。这取决于您想要的响应处理。https://www.learnrxjs.io/learn-rxjs/operators

class SomeComponent {
  data$ = this.parameters.changes().pipe(
    switchMap(() => this.serviceHttp.getData())
  );
}

并在您的模板中将其用作 data$ | async