在jQuery .each()循环中迭代计数器

时间:2013-11-26 11:42:21

标签: jquery each

我需要在var循环内增加$.each()计数器。这是我的代码:

ajaxCreateOrder = function(fileUrl, dataArray, numRecords) {
    var loopIteration = 1;
    var ajaxIterateDelay = 1000;
    $.each(dataArray, function(key,val) {
        setTimeout(function() {
            doAjaxRequest(loopIteration, fileUrl, val, numRecords);
        }, loopIteration * ajaxIterateDelay);
        loopIteration++;
    });
}

除了loopIteration不增加外,所有内容都按预期工作。我究竟做错了什么?感谢。

2 个答案:

答案 0 :(得分:1)

这是因为wrong use of a closure variable in loop

ajaxCreateOrder = function (fileUrl, dataArray, numRecords, storeView) {
    var ajaxIterateDelay = 1000;
    $.each(dataArray, function (index, val) {
        setTimeout(function () {
            doAjaxRequest(index + 1, fileUrl, val, numRecords);
        }, (index + 1) * ajaxIterateDelay);
    });
}

假设dataArray是一个数组,第一个参数是index,你可以使用它

答案 1 :(得分:1)

    setTimeout(function() {
        // ...
        loopIteration++;                   // inside
    }, loopIteration * ajaxIterateDelay);
                                           // not here