解决方法:
使用jquery的$.Deferred()和$.when().done()来实现异步下达到同步执行的效果,如下图所示:
deferred对象就是jQuery的回调函数解决方案;
deferred对象的含义就是"延迟"到未来某个点再执行;
deferred对象有三种执行状态----未完成,已完成和已失败。如果执行状态是"已完成"(resolved),deferred对象立刻调用done()方法指定的回调函数;如果执行状态是"已失败",调用fail()方法指定的回调函数;如果执行状态是"未完成",则继续等待。
function exportAjax (params) {
$(".loadingTip").removeClass("loadingHide").addClass("loadingShow");
$.when(getAjaxData(params)).done(function (data) {
$(".loadingTip").removeClass("loadingShow").addClass("loadingHide");
if (data.code == 9000) { objData = data.data.List;
renderAllTable(objData);
method5('allTable','导出表名');
} else {
myAlert('',data.message);
} }) }
function getAjaxData(params) {
let defer = $.Deferred();
ajaxGetAll ({ url: '/admin/statistics/Statisticsuserreg/add',
async: true,
data: params,
success: function (data) { defer.resolve(data);
} })
return defer
}