首页 > 解决方案 > 在 JavaScript 中等待 ajax 调用

问题描述

我知道有很多关于这个的问题和答案,但我是 JavaScript 新手,我正面临 async/await 函数的问题。我有两个功能:getInvoices()我有一个 ajax 调用来获取所需的数据,并loadBarChart(data)呈现一个条形图。对于我使用ApexCharts的图表。所以我首先调用getInvoices()函数来获取数据,然后我调用loadBarChart(data)像这样传递数据:

$(document).ready(function () {
    var data = getInvoices();
    console.log(data); // data is undefined
    loadBarChart(data); 
 });

data总是可能是undefined因为ajax调用没有完成jet。

这是getInvoices()功能代码:

function getInvoices() {
    var url = "@Url.Action("GetInvoiceCustum");
        $.ajax({
            type: "GET",
            dataType: "json",
            url: url,
            success: function (data) {
                return data;
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
    }

之后我更改了代码,但最后我不知道如何将数据 getInvoices()loadBarChart(data);

到目前为止,这就是我所拥有的:

$(document).ready(function () {
    var url = "@Url.Action("GetInvoiceCustum");
    var ajax1 = new Promise((resolve, reject) => {
        $.ajax({
            type: "GET",
            url: url,
            success: function (data) {
                resolve("OK");
                result = data;
            },
            error: function () {
                reject(" ERROR");
            },
        });
    });

   //At this point how can I acces the result from ajax call, and call the loadBarChart(data)
     ajax1.then(values => {
        console.log(values)
     }, reason => {
        console.log("Errors: " + reason)
     });

    ajax1.then(function (data1) {
        var data = data1.result;
        console.log(a);
        return data1.result;
        //loadBarChart(data);
    })

});

这样做我如何访问返回getInvoices()然后调用的数据loadBarChart(data),或者还有其他方法可以实现这一点?

标签: javascriptajaxasp.net-ajax

解决方案


您可以像第一个函数一样成功调用第二个函数

        $.ajax({
            type: "GET",
            url: url,
            success: function (data) {
                loadBarChart(data);
            },
            error: function () {
                reject(" ERROR");
            },
        });

推荐阅读