Angular Снова возникла ошибка «Http error response ... 0 Unknown Error» - PullRequest
0 голосов
/ 14 января 2020

Я читал много топи c об этой проблеме в стеке потока. Большая часть ответа говорит, что это проблема CORS. Я не уверен в моем случае, поэтому я снова задаю этот вопрос и мне нужна серьезная помощь здесь.

Я занимаюсь разработкой приложения Angular, которое запускает API каждые 60 секунд в веб-браузере Android для планшетов. , Приложение работает отлично. Но через пару часов я начал видеть ошибки:

0-Http failure response for https://theurl.com/api/: 0 Unknown Error

Страшно то, что это происходит случайным образом, иногда это происходит через 8,9 или 10 часов, иногда после дня, который для меня так тяжел отладить это. Но если я перезагружаю приложение, оно возвращается к нормальной работе. Конечно, я не хочу делать это каждый раз, когда это происходит, и я не могу понять, в чем проблема root, чтобы ее исправить.

Я думал о том, чтобы поместить логический элемент c в перехватчик. всякий раз, когда я получил статус ошибки: 0, затем перезагрузите приложение. Но я не уверен, что это хорошая практика ..

Любое предложение будет действительно полезно или, по крайней мере, поможет. спасибо.

// Редактировать: я просто буду игнорировать после 5-ти повторных попыток при статусе ошибки 0:

 intercept(
    request: HttpRequest<any>,
    next: HttpHandler
  ): Observable<
    | HttpSentEvent
    | HttpHeaderResponse
    | HttpProgressEvent
    | HttpResponse<any>
    | HttpUserEvent<any>
    | any
  > {
 return next.handle(request).pipe(
        catchError(err => {
          if (err instanceof HttpErrorResponse) {
            switch (err.status) {
              case 401:
                return this.handle401Error(request, next);
              case 0:
                return this.handleUnknownError(request, next);
              default:
                return this.router.navigate(['system-error']);
            }
          } else {
            return throwError(err);
          }
        })
      );
    }
   }

     private handleUnknownError(request: HttpRequest<any>, next: HttpHandler) {
        return next.handle(request).pipe(
          retryWhen(errors => {
            return errors.pipe(delay(2000), take(5));
          })
        );
      }
...