我即将为 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/