0

我一直试图让这个只用一个请求。

但是当函数调用服务时,它会触发两次 get 请求。

如果我删除 switchMap 它会触发一次。

http 请求被触发两次,它应该只触发一次。

任何帮助表示赞赏!

loadReports(val: {}) {

  const modelCode = val['modelCode'];

  this._reportService.getReportTypes(modelCode).pipe(
    debounceTime(200),
    distinctUntilChanged(),
    switchMap(() => this._reportService.getReportTypes(modelCode)),
    share(),
  ).subscribe(
    (data) => {
      console.log(data);
    },
    (error) => {
   ...
    },
    () => {
    ...
    }
  );

}

这是服务

getReportTypes(modelCode: string): Observable<any> { 
...
    return this._http.get(apiUrl, httpOptions).pipe(
      tap( _ => console.log('fetched product types')),
      map((resp: Response) => {
      // return data;
          return resp.body['data'].map((item: any[]) => this._adapter.adapt(item));
      }),
      catchError(this.handleError<any>('getReportTypes Error', []))
    );
}

感谢您的帮助

4

0 回答 0