javascript—当尝试读取多个文件时,为什么filereader.readastext()会引发未捕获的dom异常?

drkbr07n  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(283)

太长,读不下去了想做一个文本编辑器,做了,现在我正在尝试一个上传功能。
我想把每个文件都读成文本,但我不确定我做得是否正确。
这是我的剧本:

function main() {
    $('#imported-files').on('change', function() {
        var files = this.files,
            reader = new FileReader();
        console.log(typeof(files))
        reader.onload = function(e) {
            console.log(e.target.result);
        }
        for (let i = 0, numFiles = files.length; i < numFiles; i++) {
            const file = files[i];
            reader.readAsText(file)
        }

    })
}

$(document).ready(main);

是,输入标记为多个,并接受所有文件类型。我得到更改事件,得到文件和一个新的filereader obj。加载后,它将读取文件结果。
这适用于单个上载的文件
但是当for循环中有多个文件时 files 列表中,它抛出一个错误,因为它已在读取文件。
可能的解决方案,我无法证明这样做的合理性:
在每个循环中创建一个新的filereader,对于小文件列表来说似乎是可靠的,但不是最佳实践
为读者写一个承诺,使之成为一个同步动作,然后在循环中继续
我也不太了解FileReaderAPI,但是通过mozilla站点阅读,我发现它有不同的功能来检查文件读取器的状态。如果有人能透露一些信息那就太棒了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题