我有一个功能,显示将文件上传到服务器的进度:
function progress(event) {
...
}
...
for (var i = 0; i<files.length; i++) {
xhr.upload.onprogress = progress;
}
进度函数在中用于循环,并为每个文件执行一次。 正在进行的功能我想写多少百分比上传,我可以为一个文件做,但如果我上传的不是一个文件,那么我不知道如何为每个文件取得进展。 我可以为进度函数添加循环参数吗?
答案 0 :(得分:1)
您可以使用匿名函数为进度函数提供附加参数:
function progress(event, file) {
...
}
for (var i = 0; i<files.length; i++) {
xhr.upload.onprogress = function(event) {
progress(event, files[i]);
}
}
但是这段代码不起作用,因为 progress 每次都会占用最后一个文件项。为了避免它,你必须使用一个闭包:
function progress(event, file) {
...
}
for (var i = 0; i<files.length; i++) {
(function(xhr, file) {
xhr.upload.onprogress = function(event) {
progress(event, file);
}
})(xhr, files[i]);
}
P上。 S.对不起,我的第一个回答是错的,我已经将其删除了。