Jquery For循环异步

时间:2014-07-01 10:02:16

标签: jquery

我有一个代码,我想以异步方式执行它,这是我的代码片段

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。有什么建议吗?我希望执行是并行的,并且平行地希望变量范围仅限于该迭代。

3 个答案:

答案 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 variablehandling 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);
    });
})