FileReader API 跳过我的方法,即使它只有 2.5 MB 并且使用 Chrome 57

FileReader API skips my method even though it is only 2.5 MB and using Chrome 57

我刚刚注意到 FileReader API 跳过了 handleFiles(appCSV) 和 returns undefined

appDictionary = handleFiles(appCSV);
dbDictionary = handleFiles(dbCSV);

我的 appCSV 文件大小只有 2584729 bytes 或大约 2.5 MB。是因为这个问题吗?

这很奇怪,因为我已经在使用 Chrome 57

请帮助我调查并提供解决方案或解决方法。谢谢!

handleFiles 函数的主体:

function handleFiles(files) {
    // Check for the various File API support.
    if (window.FileReader) {
        // FileReader are supported.
        getAsText(files[0]);
    } else {
        alert('FileReader are not supported in this browser.');
    }
}

function getAsText(fileToRead) {

    let reader = new FileReader();
    // Handle errors load
    reader.onload = loadHandler;
    reader.onerror = errorHandler;
    // Read file into memory as UTF-8      
    reader.readAsText(fileToRead);

}

function loadHandler(event) {
    let csv = event.target.result;
    processDataToDictionary(csv);
}

function errorHandler(evt) {
    if (evt.target.error.name == "NotReadableError") {

        alert("Cannot read file!");

    }
}

我已经解决了我自己的问题。这是因为 FileReader APIonLoad 事件是 asynchronous.

所以我决定将 handleFiles() 函数放在 onchange() propertyinput type = 'file' 中。