javascript - Angular 等待变量初始化

标签 javascript angular typescript

我即将为 Web 应用程序创建一项服务。第一步是通过 REST API 获取 token 。一旦此 token 可用,就应将其作为 header 发送以获取更多信息。

我的问题是它在设置变量之前执行函数以获取更多信息。 ( header 为空,但如果我手动设置 token ,它就可以工作)。

如何让我的函数等待变量获得其值?

谢谢

gettoken(): void {
this.http.get<InitResponse>('URL' + '/token').subscribe(data => {
    this.token = data.token;
    localStorage.setItem('token', data.token);
    getmoreInfo();
  },
  (err: HttpErrorResponse) => {
    if (err.error instanceof Error) {
      console.log('Client-side error occured.');
    } else {
      console.log('Server-side error occured.');
    }
  }
);

}

最佳答案

这是我的 getToken 方法:

  getToken(idProfile: string): Observable<boolean> {
    let urlAPIToken: string = urlAPIAuth;

    urlAPIToken += '/token?id_profile=' + idProfile;
    let res = encodeURIComponent(urlAPIToken);   

    return this.http.get(urlAPIToken, { withCredentials: true }).pipe(
      map(result => {    
        let token = result.toString();
        localStorage.setItem('token', token);
        return true;
      }));
  }

并且,为了将其发送到任何请求,我使用一个拦截器在所有 HTTP 请求中发送 token :

const token = localStorage.getItem(TOKEN_NAME);

      request = request.clone({
        setHeaders: {
          Authorization: `Bearer ${token}`
        }
      });

示例:here

关于javascript - Angular 等待变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52947475/

相关文章:

NetBios 的 Javascript 正则表达式

javascript - 如何记住事件菜单

javascript - Angular 2 NgFor 模式错误消息未显示

reactjs - 界面不能同时扩展 anchor 和按钮类型

javascript - 尝试制作 Visual Studio Code 扩展,3 个问题

javascript - 无法从 Gettyimages API 获取请求

javascript - JS : write a join function using reduce method . .. 函数的控制台日志返回不正确的输出

javascript - 从 Angular 中的另一个组件调用模式对话框的正确方法?

javascript - 如何将此 AngularJS HTML 模板添加到我的 Angular 8 项目中

Angular Material slider 无法显示值