ExtJS loadMask:在多个ajax调用中管理几个loadMask

Sim*_*mon 2 ajax extjs mask loading request

在我的应用程序中,我需要同时执行几个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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我发现hide()会隐藏内存中的所有loadMaskes.我想要做的只是隐藏这个ajax请求中的那个,这样在所有请求结束之前总会有一个掩码.

还有另一种实现方法吗?

谢谢!

Li0*_*liQ 6

为什么不为所有请求使用一个相同的掩码,并在返回所有请求后将其删除?

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
    }
}
Run Code Online (Sandbox Code Playgroud)