我循环浏览拖入窗口的文件:
$.each(files, function(index, file){
p.readFile(file).done(p.showFile);
});
通过以下方法阅读:
p.readFile = function(file) {
var fileReader = new FileReader();
var deferred = $.Deferred();
fileReader.onload = function(event) {
deferred.resolve(event.target.result);
};
fileReader.onerror = function() {
deferred.reject(this);
};
fileReader.readAsDataURL(file);
return deferred.promise();
};
将读取的文件传递给此方法后:
p.showFile = function(file, index) {
};
我的问题涉及第一个循环:
$.each(files, function(index, file){
p.readFile(file).done(p.showFile);
});
我需要将循环的索引和从promise的返回文件传递给p.showFile方法,我该怎么做?
答案 0 :(得分:1)
使用匿名函数
$.each(files, function(index, file){
p.readFile(file).done(function(data) {
p.showFile(data, index);
});
});
$.each
为每次迭代创建了自己的范围,所以我认为另一个封闭不是必需的