geolocation.getCurrentPosition 如何返回值?

Posted

技术标签:

【中文标题】geolocation.getCurrentPosition 如何返回值?【英文标题】:How geolocation.getCurrentPosition return value? 【发布时间】:2017-11-29 03:27:38 【问题描述】:

我正在使用 getCurrentPosition 来获取当地的纬度和经度。我知道这个函数是异步的,只是想知道如何返回其他函数可以访问的经纬度值?

    function getGeo() 
        navigator.geolocation.getCurrentPosition(getCurrentLoc)
    

    function getCurrentLoc(data) 
        var lat,lon;
        lat=data.coords.latitude;
        lon=data.coords.longitude;
        getLocalWeather(lat,lon)
        initMap(lat,lon)
    

【问题讨论】:

【参考方案1】:

我建议你把它包装在一个承诺中:

function getPosition() 
    // Simple wrapper
    return new Promise((res, rej) => 
        navigator.geolocation.getCurrentPosition(res, rej);
    );


async function main() 
    var position = await getPosition();  // wait for getPosition to complete
    console.log(position);


main();

https://jsfiddle.net/DerekL/zr8L57sL/

ES6 版本:

function getPosition() 
    // Simple wrapper
    return new Promise((res, rej) => 
        navigator.geolocation.getCurrentPosition(res, rej);
    );


function main() 
    getPosition().then(console.log); // wait for getPosition to complete


main();

https://jsfiddle.net/DerekL/90129LoL/

【讨论】:

简单干净!谢谢!! 确实很棒! 'return new Promise' 方法是在函数(在本例中为 geolocation.getCurrentPosition)中处理回调的好方法,其中正常 .then 处理不足

以上是关于geolocation.getCurrentPosition 如何返回值?的主要内容,如果未能解决你的问题,请参考以下文章