【发布时间】:2021-03-04 21:35:25
【问题描述】:
以下代码从 API 获取数据,但是我想存储数据,然后尽可能从存储的数据中获取值。我不知道如何做到这一点,并希望有人至少可以为我指出正确的方向。任何帮助将不胜感激。
let arrivalUrl = "https://aerodatabox.p.rapidapi.com/flights/airports/icao/egnx/" + YYYY + "-" + MM + "-" + DD + "T" + HH + ":" + Mins + "/" + YYYY + "-" + MM + "-" + DD + "T" + HH2 + ":" + Mins2 + "?rapidapi-key=88ba89e474mshf44d973b69b2a4cp1dacdfjsnac365a6da71e";
function getArrivalInfo() {
dataObject3 = new XMLHttpRequest();
dataObject3.addEventListener("readystatechange", function() {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
dataObject3.open('GET', arrivalUrl, true);
dataObject3.send();
dataObject3.onload = function() {
ArrivalInfo = JSON.parse(dataObject3.responseText);
// 1st Arrival.
document.getElementById('arrivalairport0').innerHTML = ArrivalInfo.arrivals[0].movement.airport.icao;
document.getElementById('arrivaltime0').innerHTML = ArrivalInfo.arrivals[0].movement.scheduledTimeLocal.substring(11, 16);
document.getElementById('arrivalcallsign0').innerHTML = ArrivalInfo.arrivals[0].number;
document.getElementById('arrivalstatus0').innerHTML = ArrivalInfo.arrivals[0].status;
document.getElementById('arrivalaircraft0').innerHTML = ArrivalInfo.arrivals[0].aircraft.model;
// 2nd Arrival.
document.getElementById('arrivalairport1').innerHTML = ArrivalInfo.arrivals[1].movement.airport.icao;
document.getElementById('arrivaltime1').innerHTML = ArrivalInfo.arrivals[1].movement.scheduledTimeLocal.substring(11, 16);
document.getElementById('arrivalcallsign1').innerHTML = ArrivalInfo.arrivals[1].number;
document.getElementById('arrivalstatus1').innerHTML = ArrivalInfo.arrivals[1].status;
document.getElementById('arrivalaircraft1').innerHTML = ArrivalInfo.arrivals[1].aircraft.model;
// 3rd Arrival.
document.getElementById('arrivalairport2').innerHTML = ArrivalInfo.arrivals[2].movement.airport.icao;
document.getElementById('arrivaltime2').innerHTML = ArrivalInfo.arrivals[2].movement.scheduledTimeLocal.substring(11, 16);
document.getElementById('arrivalcallsign2').innerHTML = ArrivalInfo.arrivals[2].number;
document.getElementById('arrivalstatus2').innerHTML = ArrivalInfo.arrivals[2].status;
document.getElementById('arrivalaircraft2').innerHTML = ArrivalInfo.arrivals[2].aircraft.model;
// 4th Arrival.
document.getElementById('arrivalairport3').innerHTML = ArrivalInfo.arrivals[3].movement.airport.icao;
document.getElementById('arrivaltime3').innerHTML = ArrivalInfo.arrivals[3].movement.scheduledTimeLocal.substring(11, 16);
document.getElementById('arrivalcallsign3').innerHTML = ArrivalInfo.arrivals[3].number;
document.getElementById('arrivalstatus3').innerHTML = ArrivalInfo.arrivals[3].status;
document.getElementById('arrivalaircraft3').innerHTML = ArrivalInfo.arrivals[3].aircraft.model;
// 5th Arrival.
document.getElementById('arrivalairport4').innerHTML = ArrivalInfo.arrivals[4].movement.airport.icao;
document.getElementById('arrivaltime4').innerHTML = ArrivalInfo.arrivals[4].movement.scheduledTimeLocal.substring(11, 16);
document.getElementById('arrivalcallsign4').innerHTML = ArrivalInfo.arrivals[4].number;
document.getElementById('arrivalstatus4').innerHTML = ArrivalInfo.arrivals[4].status;
document.getElementById('arrivalaircraft4').innerHTML = ArrivalInfo.arrivals[4].aircraft.model;
}
}
getArrivalInfo();
【问题讨论】:
-
你能说得更具体点吗? “存储数据,然后从存储的数据中获取值”是什么意思?
-
好吧,如果可能的话,我只需要能够存储数据,然后在我的 html 页面中使用存储的数据。这样做的目的是使我不会向 API 服务器发送尽可能多的请求。最好我会每隔一小时左右获取新的 api 数据,但是我需要先获取基本的存储元素。我可以以某种方式创建数据库吗?
-
听起来您正在尝试实现缓存。这可能会有所帮助:dev.to/adancarrasco/caching-api-requests-in-javascript-mc4
标签: javascript api local-storage storage