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

时间:2016-06-29 13:40:55

标签: 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,但没有成功。

1 个答案:

答案 0 :(得分:1)

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,
      })
    }
  })

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