Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5地理位置非异步_Javascript_Html_Asynchronous_Gps_Synchronous - Fatal编程技术网

Javascript HTML5地理位置非异步

Javascript HTML5地理位置非异步,javascript,html,asynchronous,gps,synchronous,Javascript,Html,Asynchronous,Gps,Synchronous,我正在寻找一种方法,迫使我的javascript应用程序在执行更多代码之前等待坐标。我希望下面的命令或类似命令是同步的,而不是异步的 navigator.geolocation.getCurrentPosition(getGPSCoordinates); 我知道我可以将代码放在回调函数中,但这是唯一的方法吗?难道没有办法让我等它结束再做决定吗 难道没有一种方法让我等待它完成,然后再做决定吗 我的决定 不建议将其转换为同步操作,因为在请求过程中将冻结您的UI 等待异步函数完成的解决方案之一是实现

我正在寻找一种方法,迫使我的javascript应用程序在执行更多代码之前等待坐标。我希望下面的命令或类似命令是同步的,而不是异步的

navigator.geolocation.getCurrentPosition(getGPSCoordinates);
我知道我可以将代码放在回调函数中,但这是唯一的方法吗?难道没有办法让我等它结束再做决定吗

难道没有一种方法让我等待它完成,然后再做决定吗 我的决定

不建议将其转换为同步操作,因为在请求过程中将冻结您的UI

等待
异步
函数完成的解决方案之一是实现
回调
函数

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

签出-同步操作将在操作期间冻结UI,所以这并不是真正想要的东西。请注意,从操作系统的角度来看,UI也将被冻结,它可能会触发从“无响应”应用程序(无论您选择的浏览器/操作系统是什么)的恢复。我们可以知道原因吗。。因为使用同步操作进行远程数据获取是一种糟糕的设计……您甚至不应该尝试这样做。根据浏览器的实现方式,您实际上可能会挂断解析GPS数据的进程,因为您不允许线程正常运行。这样做毫无意义。从来没有好的理由。