Что я пытаюсь сделать? Загрузите CSV-файл и покажите пользователю прогресс по мере его анализа.Для этого используется библиотека csv-parse, а также FileReader.
Текущее поведение Файл загружается и все анализируется, но reader.onprogress
все время возвращает 100%.Кажется, он не загружается кусками.Используя отладчик, я вижу, что event.loaded
всегда совпадает с event.total
.Это относится к ЛЮБОМУ размеру файла, будь то его 400 КБ или 40 МБ - за исключением случая с 40 МБ, для отображения 100 требуется всего несколько секунд. Код ниже.
let reader = new FileReader();
reader.readAsText(this.file);
reader.onload = () => {
csvParse(reader.result, (err, data) => {
for (let i: number = 0; i < data.length; i++) {
this.jsonData.push(data[i]);
}
});
};
reader.onprogress = (event) => {
if (event.lengthComputable) {
let progress: number = ((event.loaded / event.total) * 100);
console.log(progress);
}
};
reader.onerror = function () {
throw new Error("There was an issue reading the file." + reader.error);
};