synchronen Requests auf die elegantere Art und Weise.
Als Beispiel aus der Realität:
Man hat mehrere Server oder Switche die via SNMP (Simple Network Message Protocol)
Informationen über Portstatus, Mac-Tabellen oder ähnliches liefern können.
Nun möchte man Beispielsweise lange MAC-Tabellen von vielen verschiedenen Switches holen, dies
dauert allerdings in der Regel relativ lange, man möchte den User nicht durch das ewige Laden
der Seite was ggf. bis zu 5 Minuten dauern könnte warten lassen, sondern diesem nach und nach
die Resultate der einzelnen Ajax-Requests ausgeben lassen. Bei der normalen Nutzung von Ajax-Requests
würde die Schleife durchrattern ohne die entsprechenden Ausgaben der einzelnen Requests und man würde
hier wieder ewig warten müssen bis ein Response eines Ajax-Requests zurück kommt.
Ggf. möchte man dem User auch anhand einer Progressbar den aktuellen Status aller Requests anzeigen.
Nun dazu gibt es eine einfache Implementierung zur Lösung des Problems.
$(function() { for(i=0; i<=10; i++){ $.ajax({ url: "http://example.net/ajax.php?id=" + i, ajaxI: i, beforeSend: function () { // hier könnte der aktuelle Status der Progressbar rein vor dem Request } }).success(function(data) { $("#sonstwas").append(data); i = this.ajaxI, //Hier könnte der aktuelle Status der Progressbar rein nach dem Request }); } });
durch das oben genannte Script sagen wir unserem Ajax request welchen Wert i zum Zeitpunkt x vor
der Ausführung des Requests haben soll, nachdem Request sobald der Response kommt und dieser Erfolgreich
war initialisieren wir in i den aktuellen Wert von i.
Bearbeitet von simba, 26 March 2013 - 09:23 Uhr.