如何在jquery中延迟getJson异步?
我有一个从数据库中提取的小部件列表,每个小部件都使用switch语句加载。我所遇到的问题是,如果一个如何在jquery中延迟getJson异步?,jquery,Jquery,我有一个从数据库中提取的小部件列表,每个小部件都使用switch语句加载。我所遇到的问题是,如果一个getJson调用在另一个调用之前完成,那么它的加载顺序就不正确了,即使这是一个较低的调用。我如何防止这种情况发生,以便他们能够按顺序加载 var DashboardArray = DashBoardItems.split(","); for (index = 0; index < DashboardArray.length; index++) { switch (Dashboard
getJson
调用在另一个调用之前完成,那么它的加载顺序就不正确了,即使这是一个较低的调用。我如何防止这种情况发生,以便他们能够按顺序加载
var DashboardArray = DashBoardItems.split(",");
for (index = 0; index < DashboardArray.length; index++) {
switch (DashboardArray[index]) {
case 'totalHours':
$.getJSON(hoursByType, function (json) { hrsByTypeJSON = json; HoursByType(); });
break;
case 'invoiceList':
InvoiceListNav();
break;
case 'prevInvoiceWidget':
PreviousInvoice();
break;
case 'payrollSchWidget':
PayrollSchedule();
break;
case 'empListWidget':
EmployeeList();
break;
case 'executiveOverview':
$.getJSON(execOverview, function (json) { execOverJSON = json; ExecOverView(); });
break;
case 'grossWagesDept':
$.getJSON(dashboardURL, function (json) { gwdJSON = json; WagesByDept(); });
break;
case 'grosswagesbyTrend':
$.getJSON(wagesByTrend, function (json) { wageTrendJSON = json; grosswagesbyTrend();});
break;
case 'wagesPos':
$.getJSON(wagesByPosition, function (json) { posJSON = json; WagesByPos(); });
break;
case 'totalreghoursbyTrend':
$.getJSON(RegHrsTrend, function (json1) {
RegHrTrendJSON = json1;
$.getJSON(OTHrsTrend, function (json2) {
OTHrTrendJSON = json2;
$.getJSON(PTOHrsTrend, function (json3) {
PTOHrTrendJSON = json3;
$.getJSON(OtherHrsTrend, function (json4) {
OtherHrTrendJSON = json4;
totalRegHoursTrend();
});
});
});
});
break;
case 'employeeByType':
empTypePie();
break;
case 'totalInvoice':
$.getJSON(totalInvoice, function (json) { TTLInvJSON = json; TotalInvoice(); });
break;
case 'totalInvoiceDept':
$.getJSON(InvoiceByDiv, function (json) { InvDivJSON = json; TotalInvoiceDept(); });
break;
case 'totalinvoicebyTrend':
$.getJSON(InvoiceTrend, function (json) { InvTrendJSON = json; totalInvoiceTrend(); });
break;
}
var DashboardArray=DashBoardItems.split(“,”);
对于(索引=0;索引
这需要一个大的Promissions数组。然后,当所有Promissions都已解决时,您可以执行所有初始化代码
您有大量的请求,因此对于TotalReghursbyTrend
var promises = [];
for (index = 0; index < DashboardArray.length; index++) {
switch (DashboardArray[index]) {
....
case 'totalreghoursbyTrend':
var request = $.getJSON(RegHrsTrend, function(json1) {
RegHrTrendJSON = json1;
}).then(function() {
return $.getJSON(OTHrsTrend, function(json2) {
OTHrTrendJSON = json2;
});
}).then(function() {
return $.getJSON(PTOHrsTrend, function(json3) {
PTOHrTrendJSON = json3;
});
}).then(function() {
return $.getJSON(OtherHrsTrend, function(json4) {
OtherHrTrendJSON = json4;
//totalRegHoursTrend(); MOVE TO $.when().done()
});
});
promises.push(request)
break;
}
}
// fires when all promises pushed to array are resolved
$.when.apply(null, promises).done() {
// initialize all widgets here in preferred order
totalRegHoursTrend();
}).fail(function(f1Val, f2Val) {
alert('Ooops....something in the promise chain got rejected');
});
var承诺=[];
对于(索引=0;索引
我也看不到这些嵌套调用之间有任何关系,因此实际上它们可以在另一个
$中同时调用。当()
并将该承诺推送到承诺数组时,这需要一个大的承诺数组。然后,当所有承诺都已解决时,您可以执行所有初始化代码
您有大量的请求,因此对于TotalReghursbyTrend
var promises = [];
for (index = 0; index < DashboardArray.length; index++) {
switch (DashboardArray[index]) {
....
case 'totalreghoursbyTrend':
var request = $.getJSON(RegHrsTrend, function(json1) {
RegHrTrendJSON = json1;
}).then(function() {
return $.getJSON(OTHrsTrend, function(json2) {
OTHrTrendJSON = json2;
});
}).then(function() {
return $.getJSON(PTOHrsTrend, function(json3) {
PTOHrTrendJSON = json3;
});
}).then(function() {
return $.getJSON(OtherHrsTrend, function(json4) {
OtherHrTrendJSON = json4;
//totalRegHoursTrend(); MOVE TO $.when().done()
});
});
promises.push(request)
break;
}
}
// fires when all promises pushed to array are resolved
$.when.apply(null, promises).done() {
// initialize all widgets here in preferred order
totalRegHoursTrend();
}).fail(function(f1Val, f2Val) {
alert('Ooops....something in the promise chain got rejected');
});
var承诺=[];
对于(索引=0;索引
我也看不到这些嵌套调用之间有任何关系,因此实际上它们可以在另一个
$中同时调用。当()
并将该承诺推送到承诺数组时,可能的重复您需要做的不是延迟请求,而是将它们排队。使用.done(函数(){})就像这里解释的:它保存成功数据检索后要执行的代码