当多个文件处于活动状态时,Filereader 会被覆盖

Filereader gets overwritten when multiple files are active

我正在尝试同时解析 2 个或更多 xml 个文件。意味着我可以选择例如 5 个 .xml 文件,然后它应该通过 jQuery 插件进行解析,然后写在页面上。 现在我的问题是:循环的第二次、第三次等迭代触发得太早,因此第一个文件得到 "lost".

我的尝试:

var input = $("#xmlInput");
input.change(function () {
   var inputfiles = input[0].files;
   for (var i = 0; i < inputfiles.length; i++) {
      var reader = new FileReader();
      reader.readAsText(inputfiles[i]);
      reader.onloadend = function () {
         var data = $.xml2json(reader.result);
         console.log(data);
         //write(data);
      }
    }
 });   

这只是一个猜测,但它有助于将 FileReader 分配给不同的变量吗?

   var temp = {};

   var input = $("#xmlInput");
   input.change(function () {
      var inputfiles = input[0].files;
      for (var i = 0; i < inputfiles.length; i++) {
         temp["reader"+i] = new FileReader();
         temp["reader"+i].readAsText(inputfiles[i]);
         temp["reader"+i].onloadend = function () {
            var data = $.xml2json(temp["reader"+i].result);
            console.log(data);
            //write(data);
         }
       }
    });   

找到另一个问题的答案:

(function (file) {
   var reader = new FileReader();
   reader.onload = function (readerData) {
      var data = $.xml2json(readerData.target.result);
      write(data);
   }
   reader.readAsText(file);
})(inputfiles[i]);

很有魅力。 =)