Ron*_*Ron 7 javascript filereader
我正在使用 FileReader 和 HTML 文件对话框来读取脚本中的文件。如何将此文件的内容传递到 FileReader.onload 函数之外?
function readFileData(evt) {
var file = evt.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
}
reader.readAsText(file);
}
document.getElementById('file').addEventListener
('change', readFileData, false);
/* I want to access the contents here */
Run Code Online (Sandbox Code Playgroud)
我尝试在 readFileData 和 onload 函数中粘贴返回值,但我不确定它们返回什么。
小智 3
我想你知道,这async
一切。
所以,简短的回答是:不,你不能这样做。
但是,如果您希望将来的任何调用都可以全局访问内容,您可以这样做:-
var contents;// declared `contents` outside
function readFileData(evt) {
var file = evt.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
contents = e.target.result; //<-- I removed the `var` keyword
}
reader.readAsText(file);
}
document.getElementById('file').addEventListener('change', readFileData, false);
var reasonableTimeToWaitForFileToLoad = 100000;
console.log(contents); //`contents` access first attempt: prints undefined
setTimeout(function() {
console.log(contents);//`contents` access second attempt: prints the contents 'may be if the time allows.'
}, reasonableTimeToWaitForFileToLoad);
Run Code Online (Sandbox Code Playgroud)