Javascript 在某些代码完成执行后延迟$ajax调用
我试图获取地理位置数据,然后将该数据合并到$ajax调用URL中。但实际情况是,两个console.loglat/lon调用都返回初始值0。这意味着geolocation调用太晚了,无法返回,$ajax调用只是使用默认值进行的,如下所示: 我通过在$ajax调用中添加一个任意超时函数来解决这个问题,但是如果调用需要1000或10000ms以上的时间才能返回呢? 因此,我的问题是,是否有更优雅的解决方案,仅在地理位置代码完成执行时调用$ajax?在navigator.geolocation.getCurrentPosition中调用ajax函数 var-lat=0; var-lon=0; 函数getWeatherData{ if navigator.geolocation{ navigator.geolocation.getCurrentPositionfunctionpos{ 纬度=位置坐标纬度; lon=位置坐标经度; $.ajax{ 网址:http://api.openweathermap.org/data/2.5/weather?lat= +lat+&lon=+lon+&appid=9011468f93d0dac073b28cda9e83cd01, 成功:函数数据{ 控制台日志数据; }, 错误:函数{ console.logREKT; } }; }; } } $document.readyfunction{ 获取天气数据; };Javascript 在某些代码完成执行后延迟$ajax调用,javascript,ajax,Javascript,Ajax,我试图获取地理位置数据,然后将该数据合并到$ajax调用URL中。但实际情况是,两个console.loglat/lon调用都返回初始值0。这意味着geolocation调用太晚了,无法返回,$ajax调用只是使用默认值进行的,如下所示: 我通过在$ajax调用中添加一个任意超时函数来解决这个问题,但是如果调用需要1000或10000ms以上的时间才能返回呢? 因此,我的问题是,是否有更优雅的解决方案,仅在地理位置代码完成执行时调用$ajax?在navigator.geolocation.get
将调用移动到getCurrentPosition的回调 附加值:如果地理位置不存在,它不会调用getWeatherData。现在你总是叫它
$(function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude;
lon = pos.coords.longitude;
getWeatherData();
});
}
});
还有这个:我之所以选择这个作为答案,仅仅是因为它是一个更模块化的解决方案。我试着写一些代码只是为了更仔细地观察数据流:所以,即使初始化。。。先开火,成功!仅在启动getWeatherData后记录。我对编码有点陌生,但根据这一点:回调函数被调用,直到它,嗯,调用回名字,其他代码继续执行。成功仅在函数回调时执行?总之,回调函数本质上是异步的——它们是异步调用的结果。
$(function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude;
lon = pos.coords.longitude;
getWeatherData();
});
}
});