我有 HTTP 拦截器。在那个拦截器中,在我更改请求之前,我需要打开一个加载程序。
真正让我担心的是我最终有很多switchMaps。
为什么?
我在装载机服务中做什么
public showLoader(message) {
return this.translateService.get(message).pipe(
switchMap((translatedMessage) => {
this.loader$ = from(
this.loadingController.create({ message: translatedMessage })
);
return this.loader$.pipe(
switchMap((loader) => {
return from(loader.present());
})
);
})
);
}
Run Code Online (Sandbox Code Playgroud)
在我的拦截器中
public intercept(request: HttpRequest<any>, next: HttpHandler) {
return this.loaderService.showLoader("WAITING").pipe(
take(1),
switchMap( ()=>{
Run Code Online (Sandbox Code Playgroud)
所以已经有 3 个嵌套的switchMaps。在它下面,我还需要 2 或 3 个switchMaps(一个用于从存储中获取令牌,另一个用于其他用途)。基本上最终有 5switchMap秒。
问题:嵌套所有这些switchMap被认为是一种反模式吗?