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