在我的应用程序中,我需要同时执行几个ajax请求,但是每个请求都会根据响应大小花费不同的时间。为了避免在ajax请求期间进行进一步的操作,我想在每个ajax调用中使用Ext.LoadMask,如下所示:
for(var i=0; i<ajaxCount; i++) {
var loadMask = new Ext.LoadMask(Ext.getBody(), {msg:"Loading " + ajaxName[i]});
Ext.Ajax.request({
success: function() {
loadMask.hide();
},
failure: function() {
loadMask.hide();
}
}
}
但是,我发现hide()会将所有loadMaskes隐藏在内存中。我想做的只是在此ajax请求中隐藏一个,这样在所有请求结束之前总会有一个掩码。
还有另一种实现方法吗?
谢谢!
最佳答案
为什么不对所有请求使用相同的掩码,并在返回所有请求后将其删除?
var requestCounter = 0;
function hideMask(){
if (requestCounter > 1){
requestCounter--;
} else {
loadMask.hide();
}
}
if (ajaxCount > 0){
var loadMask = new Ext.LoadMask(Ext.getBody(), {msg:"Loading"});
}
for(var i=0; i<ajaxCount; i++) {
requestCounter++;
Ext.Ajax.request({
success: hideMask,
failure: hideMask
}
}
关于ajax - ExtJS loadMask:在多ajax调用中管理多个loadMask,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9132217/