我一直试图让这个只用一个请求。
但是当函数调用服务时,它会触发两次 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', []))
);
}
感谢您的帮助