Я написал Http Interceptor
в Angular 6 .
Цель состоит в том, чтобы перезагрузить домашнюю страницу, когда 302 status
возвращается.
В настоящее время я не могу понять, почему HttpInterceptor
ведет себя так, как оно
Код:
API-вызов, который возвращает 302 status
ниже.
this._service.checkStatus()
вызывает back end API, который возвращает 302 http status
Код API:
public checkStatus() : void {
this._service.checkStatus().subscribe(
(data) => console.log('success In checkStatus '),
(error)=>console.log('error In checkStatus')
);
}
Код перехватчика:
export class MyInterceptor implements HttpInterceptor{
constructor(){
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('inside interceptor' );
return next.handle(request).pipe(
tap(
event =>{
},
error=>{
console.log(error);
if (error instanceof HttpErrorResponse) {
if (error.status === 302) {
window.location.reload();
}
}
}
)
);
}
}
Выпуск:
Теперь возникает проблема, когда возвращается 302 status
, строка (error)=>console.log('error In checkStatus')
все еще выполняется в вызове API - checkStatus
.
У меня вопрос, почему по-прежнему вызывается обработчик ошибок в вызове API.
То есть после возврата 302 страница перезагружается с window.location.reload()
Но обработчик ошибок (error)=>console.log('error In checkStatus')
по-прежнему вызывается.
Что нужно сделать, чтобы предотвратить выполнение кода обработчика ошибок внутри checkStatus
API?