我有一个代码,我想以异步方式执行它,这是我的代码片段
var arr = [1,2,7,4,5];
for(var i in arr)
{
var res = "";
var count =i;
$("#container").append("<div id='div_"+count+"'></div>");
$.get( qlink, function(retdata) {
res= retdata.value;
});
$("#div_"+count).html(res); // Last line
}
一切都很好但这里的问题出现在&#34;最后一行&#34;它的作用是每次迭代都需要count的值为5。有什么建议吗?我希望执行是并行的,并且平行地希望变量范围仅限于该迭代。
答案 0 :(得分:0)
var arr = [1,2,7,4,5];
for(var i in arr)
{
var res = "";
var count =i;
$("#container").append("<div id='div_"+count+"'></div>");
$.ajax({
url:"yoururl",
sucess: function(result){
$("#div_"+count).html(result.value);
}
});
}
答案 1 :(得分:0)
将最后一行移动到“get”调用的处理函数中:
var arr = [1,2,7,4,5];
for(var i in arr)
{
var res = "";
var count = i;
$("#container").append("<div id='div_" + count + "'></div>");
$.get( qlink, function(retdata) {
res = retdata.value;
$("#div_" + count).html(res);
});
}
答案 2 :(得分:0)
基本问题是wrong use of a closure variable和handling of the async value res
var arr = [1, 2, 7, 4, 5];
$.each(arr, function (i, val) {
var $ct = $("<div id='div_" + val + "'></div>").appendTo("#container");
$.get(qlink, function (retdata) {
$ct.html(retdata.value);
});
})