В настоящее время я использую ExcelJS для чтения больших файлов Excel (более 10 000 строк) в NodeJS/Angular/ Приложение Электрон. Он отлично читает файлы меньшего размера, но для чтения больших файлов требуется от 3,9 до 5 секунд, и в течение этого времени CSS вообще не обновляется.
В настоящее время я использую async/await для загрузки файлов, так как я думал, что это позволит выполнять другие операции во время ожидания загрузки файла, поскольку я думал, что операции ввода-вывода в узле имеют свой собственный поток. Я также читал, что задачи с интенсивным использованием ЦП блокируют все остальные процессы Node.
Это код, который в настоящее время загружает книгу:
async openWorkbook(filename: string) {
this.loading = true;
const workbook = new Workbook();
const promise = workbook.xlsx.readFile(this.path + '/sheets/' + filename)
.then(() => {
// use workbook
workbook.getWorksheet(1).name = workbook.getWorksheet(1).name.slice(0, 31);
const excelFile: ExcelFile = { workbook: workbook, filename: filename };
this.wbSource.next(excelFile);
});
const read = await promise;
}
Этот код работает так же, как реализация обратного вызова, они оба блокируют CSS приложения. Как мне читать файл (или выполнять любую задачу с интенсивным использованием ЦП), не блокируя пользовательский интерфейс?
Thread
, если хотите, я написал это, чтобы решить аналогичную проблему. где я не хотел поддерживать целый файл для решения одной задачи. - person I wrestled a bear once.   schedule 16.08.2019