如何一次从API获取数据,然后多次使用该数据?

时间:2019-12-06 18:13:36

标签: jquery ajax asynchronous

我有一个函数,该函数通过JQuery的$ .post()方法发出发布请求,并从API检索客户列表。我必须在一个下拉列表中加载此客户列表,以便用户选择一个。然后,用户将有可能在客户端上添加另一个下拉列表,该列表必须填充有以前从API提取的相同数据。

    function fillCustomerList(selector) {
    let req =
    {
        "api_uid": /*myapiuid*/,
        "api_key": /*myapikey*/
    };

    req = JSON.stringify(req);

    $.post("https://api.fattureincloud.it:443/v1/clienti/lista", req, "json")
        .done(function (data) {
            var customerList = data["lista_clienti"];

            //fill first product list with products
            for (let i = 0; i < customerList.length; i++) {
                $(selector+" .customerList").append("<li class='list-group-item'>" + customerList[i]["nome"] + "</li>");
            }
        }).fail(function () {
            //TODO show error message
            console.log("getCustomerList error");
        });

    var customerList = data["lista_clienti"];

    //fill first product list with products
    for (let i = 0; i < customerList.length; i++) {
        $(selector + " .customerList").append("<li class='list-group-item'>" + customerList[i]["nome"] + "</li>");
    }
}

我试图做的是访问以前填充的下拉列表及其内容,只是复制它,然后显示相同的内容。

$(document).ready(function () {

    var ncustomers = 0;//number of customers

    //Add first customer
    ncustomers++;
    AddCustomer(ncustomers);

    //filling list with data fetched from api
    fillCustomerList("#customer-1");

    /*Trying to get list content*/
    $("#customer-1 .customerList).html();//this is empty, since the request 
    //hasn't finished yet and filled the list
});

由于请求是异步的,因此当我尝试访问列表时,它仍然为空。

我发现的唯一解决方案是,每当用户想要生成新的下拉列表时,都要从API重新获取数据,考虑到我对服务的API调用次数。

有没有一种方法,我只需要一次发出请求?还是我必须通过许多不同的请求来检索相同数据?

0 个答案:

没有答案