【问题标题】:Storing values from API and then getting data to reduce amount of requests从 API 存储值,然后获取数据以减少请求量
【发布时间】: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


【解决方案1】:

目前尚不清楚您到底想做什么,但我相信您希望减少到服务器的往返次数并改善响应时间。

一种可能的方法是缓存数据。阅读这篇文章;它可以提供帮助。 https://medium.com/javascript-dots/cache-api-in-javascript-644380391681

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2020-04-30
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多