我有一段jQuery的代码调用快速连续几个getJSON()
电话:jQuery的范围或竞争条件
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);
});
}
当我跑这对一个laggy服务器,该表获取与填充预计值为json.someMember
(它们按顺序到达:我不介意),但thisItem
列填充了来自各种迭代的不可预知的混合值。
我假设这是与范围和时间有关 - 回调函数从更广泛的范围读取thisItem
?我对吗?我如何防止这种情况?
我目前的解决方法是让JSON服务返回其输入的副本 - 至少令人不满意。
谢谢Slim问这个问题。我也有一些问题(我知道异步函数返回,但不知道如何发信号通知getJSON回调什么位置来放置返回值)。 – 2010-03-01 01:16:11