![](/img/trans.png)
[英]Why does global variable stay undefined even after assigning value to it in a local scope in javascript
[英]Why my static variable is undefined after assigning it?
我是 TypeScript 的初學者,我不明白為什么我的變量響應仍然未定義,盡管我在獲取時將結果分配給它。
這是我的代碼:
class UserInfoRepositoryInPeopleAPI implements UserInfoRepository {
private static response: Promise<any> | undefined = undefined;
constructor() {}
init = async (accessToken: string) => {
const headers = ...
const url = ...
const opts = ...
UserInfoRepositoryInPeopleAPI.response = (await fetch(url, opts)).json();
console.log('response? ', await UserInfoRepositoryInPeopleAPI.response);
};
getResponse = () => {
return UserInfoRepositoryInPeopleAPI.response;
};
}
然后,在另一個 function 中,我做了:
const userInfo = new UserInfoRepositoryInPeopleAPI();
userinfo.init(my_access_token)
這個時候是打印response? ...my_fetch_response...
response? ...my_fetch_response...
所以它不是未定義的。 但是,當我接下來做的時候:
console.log('the response here will be undefined : ', (await getResponse()))
我得到: the response here will be undefined: undefined
我究竟做錯了什么?
此行缺少關鍵字等待。 response.json
也返回 promise。
UserInfoRepositoryInPeopleAPI.response = await (await fetch(url, opts)).json();
console.log('response? ', UserInfoRepositoryInPeopleAPI.response);
此外, UserInfoRepositoryInPeopleAPI.init
是一個異步 function,它返回一個 promise,因此您需要等待它。
const userInfo = new UserInfoRepositoryInPeopleAPI();
await userinfo.init(my_access_token);
console.log(getResponse());
由於 promise 的異步性質, UserInfoRepositoryInPeopleAPI.response
返回未定義。由於您沒有等待我上面指定的 function 調用,因此在打印UserInfoRepositoryInPeopleAPI.response
時,該值尚不可用。
您需要使getResponse()
異步 function。
getResponse = async () => {
return await UserInfoRepositoryInPeopleAPI.response;
};
您還需要這樣做:
await userinfo.init(my_access_token)
可能是
等待用戶信息.getResponse()
代替
等待 getResponse()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.