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

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

【讨论】:

是的,这正是我想要的,谢谢。

以上是关于我似乎无法访问地理位置返回值的主要内容,如果未能解决你的问题,请参考以下文章

Angular HTTP Post - 无法访问返回值[重复]

无法访问 XML 元素的节点值

无法访问从 OpenCV 函数返回的 Mat 值

无法访问文件

无法访问返回的结构中的指针值 [C]

Firestore 交叉引用返回一个承诺对象,无法访问文档值