我需要在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
不增加外,所有内容都按预期工作。我究竟做错了什么?感谢。
答案 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