我正在使用jquery并且在一个函数中我正在调用多个函数,这些函数正在执行不同的ajax请求,例如
function contactForm(){
loadCountryList();
loadMyData();
checkUserType();
// doing my stuff
}
我怎么知道是否所有的ajax请求都已完成,以便我最终开始做我的东西? 我不想逐个调用它们来最小化请求时间。任何建议都会对我有所帮助。
答案 0 :(得分:2)
您可以使用the global ajax handlers here,特别是.ajaxStop()
,如下所示:
$(document).ajaxStop(function() {
alert("All requests have completed!");
//if you don't want to run it again, for example on future requests
//then just unbind it like any other event :)
$(this).unbind('ajaxStop');
});
您也可以直接在要显示的元素上使用它,例如:
$("#successDiv").ajaxStop(function() {
$(this).fadeIn();
});
当{strong>所有请求完成时,.ajaxStop()
处理程序(它只是一个事件)运行,而不是在每个请求完成之后。
答案 1 :(得分:1)
// something like this
var countriesLoaded = false;
var dataLoaded = false;
var userTypeChecked = false;
var didRestOfStuff = false;
function readyForNextStage() {
return countriesLoaded && dataLoaded && userTypeChecked;
}
// after you get a complete on each ajax callback
countriesLoaded = true; // or dataLoaded and so on
if (readyForNextStage() && !didRestOfStuff) {
didRestOfStuff = true;
// do rest of stuff
}