Функция CatchError перехватчика ответа выполняется несколько раз - Angular 6 - PullRequest
1 голос
/ 07 мая 2019

Я создал перехватчик для моего углового проекта, чтобы перехватывать все запросы и ответы, но функция, которая проверяет ошибки в ответах, выполняется 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;

Извините за мой плохой английский ...

1 Ответ

0 голосов
/ 08 мая 2019

Я обнаружил проблему, у меня есть общий модуль в моем приложении, и внутри него я добавил HTTP_INTERCEPTORS в качестве провайдера, используя мой класс с функцией intercept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...