簡體   English   中英

為什么我的 static 變量賦值后未定義?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM