javascript - 在 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)
,或者还有其他方法可以实现这一点?
解决方案
您可以像第一个函数一样成功调用第二个函数
$.ajax({
type: "GET",
url: url,
success: function (data) {
loadBarChart(data);
},
error: function () {
reject(" ERROR");
},
});
推荐阅读
- python - 调试 Tensorflow 2.0:在崩溃的 tf.function 中打印
- wpf - ListView CollectionView 排序最低级别
- c# - ASCII 0x00A0 怎么变成 0x00E1
- amazon-web-services - AWS 上一个安全组的安全权限
- azure-active-directory - 密码同步启用值 MS Graph
- tensorflow - tensorflow:滑动邻域掩码
- android - Android 导航返回标题屏幕
- reactjs - 使用 React 路由器的 Azure 静态应用程序路由配置
- kubernetes - 如何在 AKS 的 K8S 集群中强制执行 MustRunAsNonRoot 策略
- c# - 如果我想每次都更改 Referer 标头,就不能使用 GetStringAsync() 吗?