Я создал перехватчик для моего углового проекта, чтобы перехватывать все запросы и ответы, но функция, которая проверяет ошибки в ответах, выполняется 7 раз.
Я понял, что когда я использую throwError
изrjxs
он выполняет функцию много раз, если я использую of
rxjs
, он выполняет только одну, но не выполняет функции, которые проверяют ошибки в подписках.
constructor(private injector: Injector, public errorHandler: ApplicationErrorHandler) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const sessaoService = this.injector.get(SessaoService);
if (sessaoService.isLoogedIn()) {
const token = localStorage.getItem('token');
const tokenSplit = token.split(' ');
request = request.clone(
{ setHeaders: { 'Authorization': `${tokenSplit[1]}` } }
);
}
return next.handle(request).pipe(
catchError((err: HttpErrorResponse) => {
console.log('Execute function');
let data = {};
data = {
error: err,
status: err.status,
method: request.method
};
this.errorHandler.handleError(data);
return throwError(err);
})
);
}
Я ожидаю, что функция catchErrorвыполнить только один раз, но он выполняется 7 раз для каждого запроса.
Моя версия Angular: 6.1.3;Моя версия Rxjs: 6.4.0;
Извините за мой плохой английский ...