通过params承诺

时间:2014-05-29 14:11:45

标签: jquery

我循环浏览拖入窗口的文件:

$.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方法,我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用匿名函数

$.each(files, function(index, file){

    p.readFile(file).done(function(data) {
        p.showFile(data, index);
    });

});

$.each为每次迭代创建了自己的范围,所以我认为另一个封闭不是必需的