ExtJS 4 - Wie um zu überprüfen, ob alle aktuellen ajax-Anfragen abgeschlossen sind und dann eine Aktion ausführen?

Ich habe eine Seite, die feuert Ajax-Anforderungen für Validierungen auf server-Seite. Ich muss eine Aktion ausführen, wenn alle ajax-requests fertig geladen ist oder abgeschlossen sind.

Für diese, ich bin mit Ext.Ajax.isLoading() in eine rekursive Funktion in folgender Weise:

function chechValid(){
    if(Ext.Ajax.isLoading()){
        checkValid();
    }else{
        //Code for Action 1
    }
}//EOF

checkValid();

//Code for Action 2

Das problem ist, dass wenn ich dies mache, Browser, geben Sie die folgenden Fehler:

Mozill FF - zu viel rekursionen

IE - Stack overflow at line:18134

Wenn diese Rekursion ist eine schwere Sache für den Browser, dann, wie eine Aufgabe zu erledigen, wenn alle Ajax-requests fertig geladen ist?

Delay ist nicht das, was ich will, als wenn delay verwendet wird, dann wird der browser mit der Ausführung beginnt, den anderen code (wie 'Code für Aktion 2" als shared oben) das ist nicht das, was erwartet wird.

Das wichtigste Ziel ist, dass der browser sollte nicht ausgeführt werden, außer wenn alle Ajax-Anfragen, die sind komplett und einmal abgeschlossen, dann sollte die Durchführung einer bestimmten Aktion.

Anregungen/Hilfe dazu?

Vielen Dank im Voraus.

PS: Mit ExtJs 4.0.7

(Aktualisiert)Mehr Details über die aktuelle situation:-

Hier ist die kurze Beschreibung der situtaion zu kämpfen hat - Es ist eine form, in die ich ausführen muss, um server-side Validierungen auf verschiedenen Feldern. Ich bin dabei und feuerte einen ajax-request auf blur-event. Abhängig von der server-Antwort der Validierung Ajax feuerte auf Unschärfe, Felder werden als ungültig gekennzeichnet und die form der Einreichung ist nicht zulässig. (Vermeidung von 'change' - Ereignis als, die bewirkt, dass eine Menge overhead auf dem server aufgrund der hohen Anzahl von Ajas Anfragen und führt auch zu Schwankungen in der Wirkung auf ein Feld bei der Reaktion von verschiedenen solchen Ajax-Anfragen eingegangen sind).

Alles funktioniert einwandfrei außer in einem Fall - wenn der Benutzer ändert den Wert eines Feldes und anstelle von " tab'bing aus dem Feld Sie direkt Klicks auf die Schaltfläche speichern. In einem solchen Fall, wenn das blur-Ereignis gefeuert wird, aber die Bearbeitung 'Speichern' nicht warten, für die Ajax-Validation-response und übermittelt das Formular. Dadurch, dass ich irgendwie brauchen, um zu überprüfen, ob Ajax-requests finihed laden und der Prozess der Speicherung der form. requestComplete würde leider nicht dienen, hier. Und wenn Sie versuchen, mithilfe der Rekursion, und dann natürlich der browser abgestürzt ist wegen zu hohe Auslastung der Ressourcen. Der gleiche Fall tritt auf, wenn ich versuche, mit einer pause Skript umgehen ( als shared - Javascript Schlafen).

Mögliche Abhilfe für dieses?

TIA

  • Fügen Sie bitte einen Kommentar, wenn die Abstimmung nach unten. Das würde helfen, zu verbessern, was fehlt in der Frage. Danke.
  • Nach der Bewertung der Dinge, ich gefunden, dass dies die gleiche alte Forderung zu erwarten, ein Schlaf-Funktion in Javascript 🙂 Wie hier diskutiert - stackoverflow.com/questions/5832276/... - und an vielen anderen Orten. Ich Frage mich, dass, obwohl JS ist ein single-threaded-Sprache, aber angesichts der Präsenz von Ajax sollte es nicht so eine Funktionalität zum anhalten der Dinge in JS, wenn erforderlich? Schreiben von code in der Anfrage komplette Ereignis kann nicht immer dem Zweck dienen, zu teilen, wie in der situation vor.
InformationsquelleAutor netemp | 2011-11-19
Schreibe einen Kommentar