Mam kawałek kodu jQuery, który wywołuje kilka getJSON()
połączeń w krótkim odstępie czasu:jQuery zakres lub rasę warunek w 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);
});
}
Gdy uruchomię to na serwerze laggy, tabela zostanie wypełniona Oczekiwano wartości json.someMember
(przybywają one poza kolejnością: nie mam nic przeciwko temu), ale kolumna thisItem
jest zapełniona nieprzewidywalną mieszanką wartości z różnych iteracji.
Zakładam, że ma to jakiś związek z zakresem i czasem - funkcja oddzwaniania czyta thisItem
z szerszego zakresu? Czy mam rację? Jak mogę temu zapobiec?
Moje bieżące obejście polega na tym, że usługa JSON zwraca kopię swoich danych wejściowych - co najmniej nie jest satysfakcjonujące.
Dzięki Slim za zadanie tego pytania. Miałem również pewne problemy (wiedziałem o powrocie funkcji asynchronicznej, ale nie wiem, jak zasygnalizować wywołania getJSON, jaką lokalizację umieścić wartość zwracaną). –