我正在构建一个Angular 5应用程序,其中我有两个拦截器:
我已经创建了一个包含两个拦截器示例的样本:https://stackblitz.com/edit/angular-interceptors-ckbvsb 希望能得到一些帮助!
谢谢
更新:
感谢大家的帮助!我最终是这样实现的:
- 一个用于重试失败的504请求
- 另一个用于向用户显示有关失败请求的错误消息
我已经创建了一个包含两个拦截器示例的样本:https://stackblitz.com/edit/angular-interceptors-ckbvsb 希望能得到一些帮助!
谢谢
更新:
感谢大家的帮助!我最终是这样实现的:
@Injectable()
export class I1 implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('intercepted I1');
return next.handle(req)
.retryWhen(error => {
return error
.mergeMap((err, i) => {
if (i > 0) return Observable.throw(err)
if (err instanceof HttpErrorResponse && err.status === 504) { // timeout
return Observable.of(err).delay(5000);
} else {
return Observable.throw({ error: 'No retry', cause: err })
}
})
});
}
}
app.module.ts
中 I1 是第一位,I2 是第二位。 - Ingo Bürk