使用Javascript处理文件永远不会完成
我有一个JS函数,其目的是在用户选择一个文件后加载一个文件。函数如下所示:使用Javascript处理文件永远不会完成,javascript,Javascript,我有一个JS函数,其目的是在用户选择一个文件后加载一个文件。函数如下所示: function setupFileListener() { document.getElementById('Attachment').addEventListener('change', (e) => { var file = document.getElementById('Attachment').files[0]; if (file) { p
function setupFileListener() {
document.getElementById('Attachment').addEventListener('change', (e) => {
var file = document.getElementById('Attachment').files[0];
if (file) {
processFile(file);
}
})
const processFile = (file) => {
alert("Processing file");
const fr = new FileReader();
fr.readAsDataURL(file);
fr.onloadend = () => fileLoaded;
}
const fileLoaded = (e) => {
alert("File loaded");
const fr = e.target
var result = fr.result;
console.log(result)
}
}
处理开始时,alert()函数会正确启动,但在加载文件时,我从未让alert()启动。因此,似乎从未调用fileLoaded。我在Chrome中运行这个程序,没有生成Javascript错误
有人能看到可能的错误吗?您应该调用该函数,而不仅仅是在onLoadEnd事件中返回它
const processFile = (file) => {
alert("Processing file");
const fr = new FileReader();
fr.readAsDataURL(file);
fr.onloadend = (e) => fileLoaded(e);
}
可能是这行=>
fr.onloadend = () => fileLoaded; to
fr.onloadend = () => fileLoaded();
函数setupFileListener(){
document.getElementById('Attachment')。addEventListener('change',(e)=>{
var file=document.getElementById('Attachment')。文件[0];
如果(文件){
进程文件(文件);
}
})
const processFile=(文件)=>{
警报(“处理文件”);
const fr=new FileReader();
fr.readAsDataURL(文件);
fr.onloadend=(e)=>fileLoaded(e);
}
const fileLoaded=(e)=>{
警报(“文件加载”);
常数fr=e.target
var结果=fr.result;
console.log(结果)
}
}
setupFileListener()
如果在读取文件(readAsDataURL()
)之前设置事件处理程序(onloadend
),该怎么办?fileLoaded(e)而不是fileLoadedMaybe将()添加到fileLoaded。