Javascript 在getJSON完成之前执行的代码
基本上。我正在尝试创建一个小的web应用程序,它允许人们在天气/能见度良好的情况下看到第n个最快的国际空间站通道。为了尝试并实现这一点,我调用OpenNotify API以获取给定Lat/Lon的最快传递,然后调用forecast.io API以获取给定位置的时间可见性。但是,在OpenNotify API返回的每个传递时间向forecast.io API发送多个API请求时,我遇到了一个问题,其中第二个请求在第一个请求之前返回,因此(我认为)两个结果是相同的 我尝试从$.getJSON移动到$.ajax,其中我指定了async=false(如代码中所示)。但这似乎解决不了任何问题。任何帮助都将不胜感激!(我在下面列出了网络请求的屏幕截图以及我从代码中得到的结果)Javascript 在getJSON完成之前执行的代码,javascript,jquery,Javascript,Jquery,基本上。我正在尝试创建一个小的web应用程序,它允许人们在天气/能见度良好的情况下看到第n个最快的国际空间站通道。为了尝试并实现这一点,我调用OpenNotify API以获取给定Lat/Lon的最快传递,然后调用forecast.io API以获取给定位置的时间可见性。但是,在OpenNotify API返回的每个传递时间向forecast.io API发送多个API请求时,我遇到了一个问题,其中第二个请求在第一个请求之前返回,因此(我认为)两个结果是相同的 我尝试从$.getJSON移动到$
var checkISS=function(){
$.getJSON('http://api.open-notify.org/iss-pass.json?lat=“+latCont+”&lon=”+longCont+”&alt=20&n=2&callback=?”,函数(数据){
issResponse=数据[‘响应’];
issResponse.forEach(功能(项目){
riseTime=新日期(item.riseTime*1000).toISOString();
console.log(“RiseTime=“+RiseTime”);
riseTimeHour=上升时间子串(11,13);
console.log(“RiseTimeHour=“+RiseTimeHour”);
weatherRiseTime=riseTime.substring(0,riseTime.length-5);
$.ajax({
网址:'https://api.forecast.io/forecast/“+apiKey+”/“+latCont+”、“+longCont+”、“+weatherRiseTime+”?回调=?”,
数据类型:“json”,
数据:数据,
async:false,
成功:函数(数据){
$(“body”).append(riseTime+“time visibility be”+data.hourly.data[riseTimeHour].cloudCover+“
”);
}
});
});
});
}
您是否尝试关闭缓存?您是指浏览器端?我可以试试。但是,因为它们是两个不同的请求,所以这不重要,不是吗?我尝试禁用缓存,但是,唉,我们的变量都是全局变量:您应该重写issResponse
->var issResponse
,riseTime
,var riseTime
,等等……您正在循环中进行ajax调用,因此,第二次调用的响应可能在第一次调用之前…使其成为带有success/error函数的递归调用
var checkISS = function(){
$.getJSON('http://api.open-notify.org/iss-pass.json?lat=' + latCont + '&lon=' + longCont + '&alt=20&n=2&callback=?', function(data) {
issResponse = data['response'];
issResponse.forEach(function(item){
riseTime = new Date (item.risetime * 1000).toISOString();
console.log("RiseTime = " + riseTime);
riseTimeHour = riseTime.substring(11,13);
console.log("RiseTimeHour = " + riseTimeHour);
weatherRiseTime = riseTime.substring(0, riseTime.length - 5);
$.ajax({
url: 'https://api.forecast.io/forecast/' + apiKey + '/' + latCont + ',' + longCont + ',' + weatherRiseTime + '?callback=?',
dataType: 'json',
data: data,
async: false,
success: function(data){
$("body").append(riseTime + " time visibility be " + data.hourly.data[riseTimeHour].cloudCover + "<br>");
}
});
});
});
}