首页 > 解决方案 > 如何在 Method intercept() Http Interceptor 中使用 setTimeout

问题描述

我使用 HttpInterceptor 设置“承载令牌”标题以登录 Angular,当我登录服务器时返回一个令牌并将其保存在 Response 变量中,但我需要一个 Request 变量,这就是我使用 Intercept 的原因。

export class TokenInterceptorService implements HttpInterceptor {

  constructor(private authService: AuthService) { }

  intercept(req, next) {

    const tokenizeReq = req.clone({
      setHeaders: {
        authorization: `Bearer ${this.authService.getToken()}`
      }
    });

    return next.handle(tokenizeReq);
  }

}

导航器中令牌为 Null 的图像我使用 Google Chrome

令牌为 Null 的图像

好吧,当我打印变量时,我发现问题我在令牌不存在时设置令牌,

截取打印令牌时的图像

在此处输入图像描述

当我正确使用 setTimeout 打印令牌但我不知道如何在方法拦截中使用时,我尝试了不同的方法来使用此方法,但是当我尝试添加它时,我不知道如何在方法拦截()中使用 setTimeout

当我使用 setTimeout 打印令牌时的代码

export class TokenInterceptorService implements HttpInterceptor {

  constructor(private authService: AuthService) { }

  intercept(req, next) {

    const tokenizeReq = req.clone({
      setHeaders: {
        authorization: `Bearer ${this.authService.getToken()}`
      }
    });

    setTimeout(() => {
      const token = this.authService.getToken();
      console.log(token);  
    }, 100);

    return next.handle(tokenizeReq);
  }

}

在此处输入图像描述

如何在方法 intercept() 中使用 setTimeout 我尝试保存变量但设置数字(6、5 或 9)我不知道该怎么做。

标签: angulartypescriptangular-httpclient-interceptors

解决方案


推荐阅读