我想将用户的地理位置返回给变量,以便其他函数以后可以使用它。我尝试使用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);

  }
})

关于javascript - 如何从异步/等待函数返回值到全局变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59717636/

10-12 15:12