gpt4 book ai didi

javascript - 在某些代码完成执行后延迟 $ajax 调用

转载 作者:行者123 更新时间:2023-11-29 17:52:42 27 4
gpt4 key购买 nike

我正在尝试获取地理位置数据,然后将该数据合并到 $ajax 调用 URL 中。但实际情况是,两个 console.log(lat/lon) 调用都返回初始值 (0)。这意味着地理定位调用来不及返回,$ajax 调用只是使用默认值进行,如:http://api.openweathermap.org/data/2.5/weather?lat=0&lon=0&appid=9011468f93d0dac073b28cda9e83cd01 "

var lat = 0;
var lon = 0;

console.log(lat);
console.log(lon);

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude;
lon = pos.coords.longitude;
})
}

function getWeatherData() {
console.log(lat);
console.log(lon);
setTimeout(function(){
$.ajax({
url: "http://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=9011468f93d0dac073b28cda9e83cd01",
success: function (data) {
console.log(data);

},
error: function () {
console.log("REKT");
}
})
}, 1000);
}

$(document).ready(function () {
getWeatherData();
});

我通过向 $ajax 调用添加任意超时函数来解决它,但是如果调用需要超过 1000 或 10000 毫秒才能返回怎么办?所以,我的问题是是否有更优雅的解决方案来仅在地理定位代码执行完毕时才调用 $ajax?

最佳答案

调用getCurrentPosition的回调

附加值:如果地理位置不存在,它不会调用 getWeatherData。现在你总是称它为

$(function() { 
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude;
lon = pos.coords.longitude;
getWeatherData();
});
}
});

还有这个:https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

关于javascript - 在某些代码完成执行后延迟 $ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41868722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com