我有一个尝试从浏览器获取位置设置的应用程序,这往往需要一些时间,所以我希望它在页面加载时运行。但是,如果您在位置回调运行之前单击提交按钮,则您没有位置数据。我的问题很简单,如何在提交表单之前等待我的位置成功回调完成?(没有像睡眠声明这样愚蠢的东西)。
理想情况下,我想闪烁一个繁忙的指示器并等待数据。这可能吗?我有代码可以让繁忙的指示器可见,但我不确定如何优雅地等待数据可用。
$(document).ready(function(){
var lat = "";
var lng = "";
var accuracy = "";
var locationFound = false;
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function positionSuccess(loc){
lat = loc.coords.latitude;
lng = loc.coords.longitude;
accuracy = loc.coords.accuracy;
locationFound = true;
});
}else{
alert("I'm sorry, your jerk browser doesn't support geolocation");
locationFound = true;
}
$('#locForm').submit(function(e){
$('#lat').val(lat);
$('#lng').val(lng);
$('#boundary').val($('#boundary-select').val());
}