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