ExtJS loadMask: управлять несколькими loadMask в нескольких вызовах ajax - PullRequest
2 голосов
/ 03 февраля 2012

В моем приложении мне нужно выполнить несколько запросов ajax одновременно, но каждый запрос занимает разное время в зависимости от размера ответа. Чтобы избежать дальнейших операций во время запроса ajax, я хотел бы использовать Ext.LoadMask в каждом вызове ajax, например:

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 () скроет все нагрузки в памяти. Что я хочу сделать, так это скрыть только один в этом запросе ajax, чтобы всегда была маска до конца всех запросов.

Есть ли другой способ реализации этого?

спасибо!

1 Ответ

6 голосов
/ 03 февраля 2012

Почему бы не использовать одну и ту же маску для всех запросов и удалить ее после того, как все запросы будут возвращены?

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
    }
}
...