计数 ajax 个请求
Count ajax requests
我需要计算 ajax 的数量。每个ajax在for里面都是运行(但是我不能使用循环函数的索引)。这是我的代码:
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 循环的索引。
注意:代码经过简化,实际代码更复杂。
您可以使用闭包来执行此操作,保存计数的当前值:
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++;
}
我需要计算 ajax 的数量。每个ajax在for里面都是运行(但是我不能使用循环函数的索引)。这是我的代码:
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 循环的索引。
注意:代码经过简化,实际代码更复杂。
您可以使用闭包来执行此操作,保存计数的当前值:
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++;
}