【发布时间】:2017-11-15 05:34:11
【问题描述】:
这里是我写的拦截器,直接通过拦截器处理微调器
@Injectable()
export class ApiInterceptor implements HttpInterceptor {
constructor(private _globalSpinnerService: GlobalSpinnerService) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const spinnerParam: string = req.params.get("spinner")
let handleObs: Observable<HttpEvent<any>> = next.handle(req)
if(spinnerParam) {
this._globalSpinnerService.spinner = true
handleObs.toPromise().then(() => {
this._globalSpinnerService.spinner = false
})
}
return handleObs
}
}
它按预期工作。但是,我现在看到所有涉及微调器的请求都被发送了两次。所以我想我移除微调器的方法不是最整洁的。一旦句柄结束,我如何告诉我的拦截器移除我的微调器?
编辑:
我通过将handleObs.toPromise().then 替换为handleObs.do() 来更改代码,现在它工作正常。我只是不知道为什么
【问题讨论】:
标签: angular