Angular 7 Http возвращает функцию запроса?

У меня есть функция в моем проекте Angular, которая делает запрос на получение к серверной части REST и что-то делает с данными. Ничего особенного. Это в authservice.ts.

Этот метод вызывается из перехватчика. Однако до завершения запроса перехватчик вызывает handleAuthError(), потому что метод вернул false (как??), а запрос еще не был сделан. Я вижу это, потому что в бэкэнде ничего не произошло. Затем приложение делает запрос и может обрабатывать данные.

Кто-нибудь сталкивался с этой проблемой или может предложить, как я могу это исправить?

// api.interceptor.ts

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      return next.handle(request).pipe(tap(data => {
      return data;
    },
    error => {
      // if (request.url.indexOf('/refresh') !== -1) {
        // Already attempted to refresh the token. Log out
        // this.authService.handleAuthError();
      // } else {
        // If the token can't be refreshed then log out.
        if (!this.authService.refreshJwt(this.tokenService.get())) {
          this.authService.handleAuthError();
        }
      // }
    }));


// auth.service.ts

refreshJwt(token: string): boolean {
  if (token == null || token.length <= 0) { return false; }

  const requestUrl = this.apiUrl + '/refresh';

  const requestOptions = {
    headers: new HttpHeaders({
      Authorization: `Bearer ` + this.tokenService.get()
    }),
  };

  this.http.get(requestUrl, requestOptions).subscribe(
    data => {
      // return true;
      return this.handleJwtResponse(data);
    }, error => {
      return false;
    }
  );
}
I can see this because nothing happened in the backend <= Запрос может завершиться ошибкой по совершенно другой причине и может не дойти до сервера с самого начала. Дважды проверьте вкладку сетевой активности вашего браузера в инструментах разработчика.
Igor 06.03.2019 16:33

Проверил во вкладке сеть. На конечную точку /refresh отправлено два запроса, и они оба получают ответ 200. Однако только второй запрос имеет тело ответа. В первом ответе вообще нет тела..

Olivier Bouchoms 06.03.2019 17:29
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
2
69
0

Другие вопросы по теме