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