我似乎无法访问地理位置 return 值

I can't seem to access the geolocation return value

我正在尝试使用地理位置 api 获取用户位置,在我的成功回调中,我想 return 具有位置值的 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 函数中的 return 值。

任何帮助将不胜感激,我已经坚持了一段时间。

从表面上看,您已经熟悉 async/await,因此请将您的 getPosition 代码包装在 promise 中,然后 await 将响应包装在 getLocalWeather.

这段代码可能无法在代码段中运行,但我已经在本地对其进行了测试,它可以毫无问题地记录位置。

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();