Meteor, Semantic UI Прогресс при разборе большого csv-файла
Я пытаюсь проанализировать большой CSV-файл в приложении Meteor и показать прогресс с компонентом Semantic UI Progress. Но он зависает и показывает только конечный результат.
Template.ordersImport.events({
'click button': function (e) {
e.preventDefault();
Papa.parse($('#importedFile')[0].files[0], {
delimiter: ';',
newline: '\n',
header: true,
fastMode: true,
complete: function (result) {
$('form').hide();
$('#progress').show();
var totalSize = result.data.length;
_.each(result.data, function (item, index) {
var progress = (index + 1) / totalSize * 100;
$('#progress').progress({
percent: progress
});
});
}
});
}
});
1 ответ
Код в браузере выполняется в одном потоке, поэтому, даже если вы обновите переменную прогресса, он не будет отображен в пользовательском интерфейсе до завершения анализа файла.
Не рекомендуется выполнять длительную обработку в пользовательском интерфейсе - она перестает отвечать и может привести к сбою браузера, особенно для больших файлов.
Я бы порекомендовал передать файл на сервер и выполнить там обработку.
https://forums.meteor.com/t/how-to-use-web-worker/17511
Этот ответ тоже может помочь, если вы хотите сохранить обработку в браузере
Как запустить разблокирующую фоновую задачу в клиенте Meteor/JavaScript?