我似乎无法访问地理位置返回值
Posted
技术标签:
【中文标题】我似乎无法访问地理位置返回值【英文标题】:I can't seem to access the geolocation return value 【发布时间】:2021-10-01 19:18:29 【问题描述】:我正在尝试使用 geolocation api 获取用户位置,在我的成功回调中,我想返回带有位置值的 getPosition 函数。
我已经尝试了一些方法,但到目前为止都没有成功,这就是我现在所处的位置。
function getPosition()
// If geolocation is available, try to get the visitor's position
if(navigator.geolocation)
navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
console.log("Getting the position information...")
else
alert("Sorry, your browser does not support html5 geolocation.");
function successCallback(position)
return position
function errorCallback(error)
alert("Sorry, we can't retrieve your local weather without location permission.");
;
const getLocalWeather = async () =>
if(loading === 'loading') return
setLoading('loading')
console.log(getPosition())
// this console log should return the position from getPosition
setLoading('done')
;
getPosition 函数本身工作正常,但我无法在 getLocalWeather 函数中访问它的返回值。
任何帮助将不胜感激,我已经坚持了一段时间。
【问题讨论】:
【参考方案1】:从外观上看,您已经熟悉 async/await,因此将您的 getPosition
代码封装在 promise 中,然后将 await
响应封装在 getLocalWeather
中。
此代码可能在 sn-p 中不起作用,但我已经在本地对其进行了测试,并且它记录了位置没有任何问题。
function getPosition()
return new Promise((res, rej) =>
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(success, error);
else
console.log("Sorry, your browser does not support HTML5 geolocation.");
function success(position)
res(position)
function error(error)
console.log("Sorry, we can\'t retrieve your local weather without location permission.");
);
;
async function getLocalWeather()
console.log(await getPosition())
;
getLocalWeather();
【讨论】:
是的,这正是我想要的,谢谢。以上是关于我似乎无法访问地理位置返回值的主要内容,如果未能解决你的问题,请参考以下文章