角度等待直到变量已初始化

时间:2018-10-23 11:04:21

标签: javascript angular typescript

我将要为Web应用程序创建服务。第一步是通过其余的API获得令牌。该令牌可用后,应将其作为标头发送,以获取更多信息。

我的问题是在设置变量之前,它执行该函数以获取更多信息。 (标头为空,但如果我手动设置令牌,则可以使用。)

如何让我的函数等待直到变量具有值?

谢谢

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.');
    }
  }
);

}

4 个答案:

答案 0 :(得分:0)

这是我的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请求中发送令牌:

const token = localStorage.getItem(TOKEN_NAME);

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

示例:here

答案 1 :(得分:0)

尝试这个应该为您解决皮肤问题的笨拙而讨厌的解决方案

def pound_it     text_color_hex&.prepend(“#”)除非text_color_hex&.starts_with?(“#”)     bg_color_hex&.prepend(“#”)除非bg_color_hex&.starts_with?(“#”)   结束

答案 2 :(得分:-1)

添加异步并等待您的函数以使其异步加载。

https://javascript.info/async-await

这里是练习示例

https://medium.com/@balramchavan/using-async-await-feature-in-angular-587dd56fdc77

角^

在函数上放置异步

然后等待它们依次运行的步骤,这就是异步代码的意思

答案 3 :(得分:-1)

它的棱角分的你知道吗?问题是,如果您解析Amplifier,则此Json脚本的合成非常简单