Ich habe ein Stück von jQuery-Code, der mehrere getJSON()
Anrufe in schneller Folge ruft:jQuery Umfang oder Race-Bedingung in AJAX/getJSON
var table = $("table#output");
for (var i in items) {
var thisItem = items[i];
$.getJSON("myService", { "itemID": thisItem }, function(json) {
var str = "<tr>";
str += "<td>" + thisItem + "</td>";
str += "<td>" + json.someMember + "</td>";
str += "</tr>";
table.append(str);
});
}
Wenn ich laufen diese gegen einen laggy Server, der Tisch mit den bevölkerten wird erwartet json.someMember
Werte (sie kommen außerhalb der Reihenfolge: das stört mich nicht), aber die thisItem
Spalte ist mit einer unvorhersehbaren Mischung von Werten aus verschiedenen Iterationen bestückt.
Ich gehe davon aus, dass dies etwas mit Umfang und Timing zu tun hat - die Callback-Funktion liest thisItem
aus einem größeren Bereich? Habe ich recht? Wie verhindere ich das?
Meine aktuelle Problemumgehung ist, dass der JSON-Dienst eine Kopie seiner Eingaben zurückgibt - was zumindest nicht zufriedenstellend ist.
Danke Slim für das Stellen dieser Frage. Ich hatte auch einige Probleme (ich wusste, dass die asynchrone Funktion zurückkehrt, aber nicht sicher ist, wie man den getJSON-Aufruf zurücksendet, an welcher Stelle ein Rückgabewert platziert werden soll). –