HTML5地理位置非异步

时间:2013-12-14 03:31:43

标签: javascript html5 asynchronous gps synchronous

我正在寻找一种方法来强制我的javascript应用程序在执行更多代码之前等待coordiantes。我希望以下命令或类似的东西是同步而不是异步。

navigator.geolocation.getCurrentPosition(getGPSCoordinates);

我知道我可以把我的代码放在回调函数中,但这是唯一的方法吗?我没有办法等待它完成然后做出决定吗?

1 个答案:

答案 0 :(得分:1)

  

我没有办法等待它完成然后制作   我的决定?

建议不要将其设置为同步操作,因为在请求期间冻结您的用户界面。

等待 asynchronous函数完成它的解决方案之一是实现callback函数。

function getLocation(callback) {
     if (navigator.geolocation) {
       var lat_lng = navigator.geolocation.getCurrentPosition(function(position){
          var user_position = {};
          user_position.lat = position.coords.latitude; 
          user_position.lng = position.coords.longitude; 
          callback(user_position);
       });
     } else {
         alert("Geolocation is not supported by this browser.");
     }
}
getLocation(function(lat_lng){
    console.log(lat_lng);
});

Working solution.