我将要为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.');
}
}
);
}
答案 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脚本的合成非常简单