javascript - 使用 .map() 使用 FileReader 读取多个文件

标签 javascript immutability filereader map-function

我有一组文件,我需要将文件格式化为 json (此时为对象)以及一堆其他信息。这是我尝试过的

const uploadData = Files.map((file) => {
    const fr = new FileReader();
    fr.readAsArrayBuffer(file);
    fr.onload = (event) =>{
    const fileData = event.target.result;
    return {
      query:{
         documentName: file.name,
         personId: personId,
         serviceId: serviceID,
         documentFile: fileData,
      }
     }
    }
  })

我想使用不可变的技术。我确实猜测为什么这不起作用,但不知道如何解决它。我认为 .map 不会等待文件读取器读取,因此仅返回未定义值的数组。我尝试使用 IIFE 但没有成功。

最佳答案

const uploadData = [],

 Files.forEach((file) => {
    const fr = new FileReader();
    fr.readAsArrayBuffer(file);
    fr.onload = (event) =>{
    const fileData = event.target.result;

      uploadData.push(query:{
         documentName: file.name,
         personId: personId,
         serviceId: serviceID,
         documentFile: fileData,
      })
    }
  })

由于回调中发生了 return,因此您应该使用 local var 并推送数据

关于javascript - 使用 .map() 使用 FileReader 读取多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38101377/

相关文章:

javascript - 文件阅读器 - 再次上传相同的文件不起作用

javascript - 解析云代码 - 获取 PFFile 的 URL

Java 字符串可变性 - java.lang.NoSuchFieldException : offset

javascript - 如何在时钟应用程序中用当前时间自动替换过去的秒/分钟/小时

java - hibernate 如何使用无参数构造函数初始化最终字段?

javascript - 设置自定义 immutablejs 键以防止数据重复?

javascript - 图片上传预览在 IE 上太慢

javascript - FileReader > ajax 触发两次

javascript - jquery清空父div不删除事件为什么

javascript - 是否有针对这个模糊的几分钟 iOS 日期时间本地错误的修复程序?