javascript - 等待多个文件的文件内容
问题描述
我想读取多个文件的文件内容并将内容作为数组返回。
整个过程应该等到收到所有文件内容。
我的函数只能以一个文件作为输入以某种方式工作。
一旦我输入多个文件,getFileContent
我只会收到第一个文件的结果。
有人可以给我一个提示,我在构造中缺少什么吗?
interface FileInterface {
fileName: string;
fileContent: string | ArrayBuffer | null;
}
async function readFileAsync(file: File): Promise<string | ArrayBuffer | null> {
return new Promise((resolve, reject) => {
let fileReader: FileReader = new FileReader();
fileReader.onload = () => {
resolve(fileReader.result);
};
fileReader.onerror = reject;
fileReader.readAsArrayBuffer(file);
});
}
export async function getFileContent(
files: File[]
): Promise<Array<FileInterface>> {
const uploadedFiles: FileInterface[] = [];
for (let file of files) {
console.log(file.name);
let fileContent: ArrayBuffer = (await readFileAsync(file)) as ArrayBuffer;
uploadedFiles.push({ fileName: file.name, fileContent: null });
}
return uploadedFiles;
}
// files: File[]
const fileContents: FileInterface[] = await getFileContent(files);
解决方案
根据问题评论中的讨论,我们发现问题的根源是在读取第一个文件 ( await readFileAsync(file)
) 时的暂停,该文件允许来自的 React 输入组件重新渲染和就地files
擦除。files
推荐阅读
- intellij-idea - 如何在intellij中禁用xml突出显示?
- javascript - 来自 api 的表数据
- c# - 错误:“Program.Math()”是一种方法,在给定的上下文中无效
- perl - 使用 Mojo::DOM 提取标题后未标记的文本
- asp.net-core - 部署 .NET Core WebAPI 项目的问题
- python-3.x - 有没有办法检查 Many2one res.users 记录是否已经存在
- javascript - 如何从日志数组创建具有最新时间戳的新数组
- jena - Fuseki 上传我的 protege 数据失败,一直给我错误
- javascript - 如何使用谷歌脚本将数据和格式从谷歌工作表a复制到现有工作表b而不为日期添加时间戳
- python - 如何更改 R 中使用的 python 路径?