У меня есть фрагмент кода jQuery, который вызывает несколько вызовов 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);
});
}
Когда я запускаю это на медленном сервере, таблица заполняется ожидаемыми значениями json.someMember
(они приходят не по порядку: я не против), но столбец thisItem
заполняется непредсказуемой смесью значений из разных итераций.
Я предполагаю, что это как-то связано с областью действия и временем - функция обратного вызова читает thisItem
из более широкой области? Я прав? Как мне предотвратить это?
Мой текущий обходной путь - служба JSON возвращает копию своих входных данных, что, по меньшей мере, неудовлетворительно.