在 Javascript 中读取文件而不会阻塞 I/O

Read a file in Javascript without blocking I/O

本文关键字:Javascript 读取 文件      更新时间:2023-09-26

如何使用FileReader()读取文件而不会在读取时阻塞I/O?以下是我现在的做法:

function readImageFile(imageFile, callback) {
    var reader = new FileReader();
    reader.onload = function(e) {
        callback(e.target.result);
    };
    reader.readAsDataURL(imageFile);
}

除了我需要处理非常大的图像(> 4k 分辨率)需要相当长的时间之外,这工作正常。我不能阻止用户输入在阅读时使用页面上的其他功能。

我相信

FileReader已经是异步的:https://developer.mozilla.org/en-US/docs/Web/API/FileReader

文件读取器对象允许 Web 应用程序异步读取 存储在用户计算机上的文件(或原始数据缓冲区)的内容, 使用文件或 Blob 对象指定要读取的文件或数据。

FileReaderSync将是同步版本:https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync

FileReader.readAsDataURL是异步的。根据定义,它不会阻止 UI(https://www.w3.org/TR/FileAPI/)。但是要处理文件,计算机需要花费一些资源,因此您需要考虑这一点。处理大文件可能会占用大量资源。