为文件API readAsText创建jQuery承诺

为文件API readAsText创建jQuery承诺,jquery,html,fileapi,deferred,promise,Jquery,Html,Fileapi,Deferred,Promise,我正在使用一个文件输入元素,用户将使用该元素选择单个文本文件: <input type="file" id="myfile"> 事实上涉及两件事。第一个事件发生在用户单击浏览按钮并选择特定文件时。第二个事件是当FileReader加载所选文件内容时。如果有人知道如何正确打包此文件,那么我将承诺,在解决时保存所选文件的内容,我将感谢您的洞察力。提前感谢。不应该console.log(data)是console.log(contents)?第二段代码中的promise1应该是promi

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

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

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

不应该
console.log(data)
console.log(contents)
?第二段代码中的
promise1
应该是
promise
从第一位开始吗?你的代码看起来很好,除了上面提到的打字错误。这些是我创建的打字错误。我简化了我的代码,以便在这里发布。我想,为了演示我遇到的问题,我必须创建一个完整的html页面。我认为我所经历的问题必须在何时何地创造与形式元素相关的承诺。我将用一个问题的确切例子来修改这个问题。现在谢谢你。
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);
});