如何在包含此函数之外的 TimeZoneDB API 响应的 jQuery 函数中获取变量的值或数组?



我是编程新手,有点问题。我正在编写一张地图,您可以在其中通过单击地图来获得特定卫星的下一次飞越。但是这颗卫星的采集计划中的时间戳是用UTC写的。因此,我正在使用TimeZoneDB API (https://timezonedb.com/api)计算此位置的时差/区域。通过在地图中单击来发送请求,响应是该位置的当前时间和日期,采用 JSON 格式的属性格式。此时间戳将从 UTC 时间中减去。然后,最终时区将显示在弹出窗口中。 但是我有问题,我没有获得当前日期全局的变量。我试图将其保存在本地存储中并调用它,它工作正常,但看起来不太好。通过使用这种方式,另一个问题就出现了。有时显示弹出内容比服务器的响应更快,并且不显示任何值。我发送请求并在变量中获取日期的 JavaScript/jQuery 代码如下所示(API 键、经度和纬度在此 jQuery 函数之前在变量中定义):

$.getJSON("http://api.timezonedb.com/v2/get-time-zone?key="+key+"&format=json&by=position&lat="+lat+"&lng="+lon, function(localdata) {
localtime = localdata.formatted;
localStorage.setItem('loct', localtime);
});
var localtime = localStorage.getItem('loct');
localtime = new Date (localtime);
localtime = localtime.getTime();
localStorage.removeItem('loct');

我知道可能有类似的问题,但我没有通过回调函数来解决它。我想我做错了什么。如果有人可以帮助我,那就太好了:-)

此致敬意 安娜

这样的东西没有经过测试

function getTimeZone(key, lat, lon, callback) {
$.getJSON("http://api.timezonedb.com/v2/get-time-zone?key=" + key + "&format=json&by=position&lat=" + lat + "&lng=" + lon, function (localdata) {
localtime = localdata.formatted;
localStorage.setItem('loct', localtime);
if (typeof callback == 'function') callback(localtime);
});
}
var localtime = localStorage.getItem('loct');
if (!localtime) {
//key,lat,lon you obviously have this set somewhere
getTimeZone(key, lat, lon, function (localtime) {
localtime = new Date(localtime);
localtime = localtime.getTime();
console.log("localtime", localtime)
localStorage.removeItem('loct');
})
}

您可以通过检查本地存储loct密钥是否存在然后调用getTimeZone来清理它...

最新更新