簡體   English   中英

如何從 asyn/await 函數返回值到全局變量?

[英]How to return value to global variable from asyn/await function?

我想將用戶的地理位置返回給變量,以便其他函數以后可以使用它。 我嘗試使用 async/await 功能,但它不起作用。 我做錯了什么?

// Getting data
class Data {
  static async getLatitude() {
    let latitude = await navigator.geolocation.getCurrentPosition((position) => {
      return position.coords.latitude;
    });
    return latitude;
  }

}


// Site running
window.addEventListener('load', () => {
  if(navigator.geolocation) {
    let latitude = Data.getLatitude();
    console.log(latitude);

  }
})

問題是navigator.geolocation.getCurrentPosition不返回Promise 這就是為什么你不能使用 async/await 來獲得它的響應。 您必須自己將其包裝到 Promise 中才能使用 async/await 來獲得結果。 這是完整的代碼:

class Data {
  static async getLatitude() {
    return new Promise((resolve, reject) => {
      navigator.geolocation.getCurrentPosition((position) => {
        resolve(position.coords.latitude);
      }, reject);
    });
  }
}

window.addEventListener('load', async () => {
  if (navigator.geolocation) {
    let latitude = await Data.getLatitude();
    console.log(latitude);

  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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