[英]Angular Wait until variable has been initialized
我將要為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.');
}
}
);
}
這是我的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}`
}
});
示例: 這里
添加異步並等待您的函數以使其異步加載。
https://javascript.info/async-await
這是實踐的例子
https://medium.com/@balramchavan/using-async-await-feature-in-angular-587dd56fdc77
角^
當您將異步功能
然后等待它們執行的步驟,這就是異步代碼的意思
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.