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?

Другие вопросы по тегам