所以我在使用navigator.geolocation获取经度和纬度时遇到了问题,并将其存储在全局变量中。我在不同的地方使用警报来检查javascript代码的流程。我发现顺序为1,2,4和3.为什么会这样?我真的很困惑。
$(document).ready( function() {
var latitude;
var longitude;
alert('1');
if(navigator.geolocation){
alert('2');
navigator.geolocation.getCurrentPosition( function(position){
alert('3');
latitude = position.coords.latitude;
longitude = position.coords.longitude;
geoCoords(latitude, longitude);
});
}
alert('4');
});
答案 0 :(得分:4)
navigator.geolocation.getCurrentPosition
是异步的 - 作为参数传递给它的函数是回调函数,它在getCurrentPosition
成功完成后执行。来自Mozilla文档:
navigator.geolocation.getCurrentPosition(success[, error[, options]])
回调函数之外的其余javascript代码将继续执行而不等待回调函数运行,这就是为什么你看到1,2,4,3的顺序。