1

我正在使用文件输入元素,用户将使用该元素选择单个文本文件:

<input type="file" id="myfile">

我想创建一个与加载所选文件内容的 FileReader 对象的异步事件相关联的 jQuery Promise。我在各种上下文中尝试了这样的代码,但似乎存在某种时间问题,因为我没有将内容变量传递给 then() 回调:

var promise = $.Deferred(function(dfd) {
  var file = $("#myfile")[0].files[0];
  var reader = new FileReader();
  reader.onload =  function(event){
    var contents = event.target.result;
    dfd.resolve(contents);
  };
  reader.readAsText(file);
}).promise();

// other code and promises here

$.when(promise).then(function(contents){
  console.log(contents);
});

实际上涉及两个事件。第一个事件发生在用户单击浏览按钮并选择特定文件时。第二个事件是当 FileReader 加载了选定的文件内容时。如果有人知道如何正确打包此文件,那么我将保证在解决时保留所选文件的内容,我将不胜感激您的见解。提前致谢。

4

0 回答 0