javascript - 如何从 async/await 函数将值返回到全局变量?

标签 javascript

我想将用户的地理位置返回给变量,以便其他函数稍后可以使用它。我尝试使用 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 - 如何从 async/await 函数将值返回到全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717636/

相关文章:

javascript - JSX 中的内联 eslint 注释

Javascript "Lightbox"具有垂直滚动拇指的图像库

javascript - 如何避免或解决下取整函数和错误表示的整数?

javascript - JS : Semicolons after variable declaration

javascript - 使用 Knockout .sort() 对 JSON 数据进行排序

javascript - 更改 javascript 搜索功能

javascript - 解析当前页面的网页提交按钮

Javascript - 无限滚动循环

javascript - Adobe 字符串到 Javascript 对象

javascript - 避免覆盖UI的一些方法(可能类似于firefox中的附加组件)