我需要计算ajaxes的数量。每个ajax都在里面运行(但是,我不能使用循环函数的索引)。这是我的代码:
var i = count = 0, formData, blob;
for (/*setting the for loop*/) {
$.ajax({
xhr: function(){
var xhr = $.ajaxSettings.xhr();
xhr.upload.onprogress = function(evt){
// here I need to count be 0,1,2,3,4... for every ajax
console.log('Part'+count+'is being uploaded');
};
return xhr ;
},
url: 'upload.php',
type: 'POST',
data: formData,
},
});
count++;
}
现在我需要的是获取正在上传的部分的信息。它现在的工作方式是计数始终是最后一个ajax的数量(显而易见的原因:计数增加,进度事件甚至还没有被激发)。
那么有没有办法在其他任何地方增加计数来实现这一目标?同样,我不能使用for循环的索引。
注意:代码已简化,实际代码更复杂。
答案 0 :(得分:1)
您可以使用闭包执行此操作,并保存count的当前值:
for (/*setting the for loop*/) {
$.ajax({
xhr: ( // Executing a function with count as currentCount,
// then it save the value of count in the returned function (Closure)
function(currentCount){
return function(){
var xhr = $.ajaxSettings.xhr();
xhr.upload.onprogress = function(evt){
console.log('Part'+currentCount+'is being uploaded'); // here I need to count be 0,1,2,3,4... for every ajax
};
return xhr;
};
})(count)
,
url: 'upload.php',
type: 'POST',
data: formData,
},
});
count++;
}