我正在使用文件输入元素,用户将使用该元素选择单个文本文件:
<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加载了所选文件内容。如果有人知道如何正确打包,那么我将保证在解决时保留所选文件的内容,我将非常感谢您的见解。提前谢谢。