1

我正在尝试解析 Meteor 应用程序中的大 csv 文件并使用 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
                    });
                });
            }
        });
    }
});
4

1 回答 1

0

浏览器中的代码在单个线程中运行,因此即使您更新了进度变量,它也不会在文件解析完成之前呈现到 UI。

在 UI 中进行冗长的处理不是一个好习惯——它变得无响应,并且可能使浏览器崩溃,尤其是对于大文件。

我建议将文件传递给服务器,并在那里进行处理。

https://forums.meteor.com/t/how-to-use-web-worker/17511

如果您想在浏览器中进行处理,这个答案也可能会有所帮助

如何在 Meteor/JavaScript 客户端中运行解锁后台任务?

于 2016-09-25T12:53:29.137 回答