流星,语义UI进度,同时大csv文件解析

问题描述:

我想解析Meteor应用程序中的大csv文件,并显示语义UI进度组件的进展。但它冻结并只显示最终结果。在浏览器中流星,语义UI进度,同时大csv文件解析

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 
        }); 
       }); 
      } 
     }); 
    } 
}); 
+0

使用工作线程和更新UI在'step'功能这个答案可能帮助了。 – MasterAM

+0

工作线程在Meteor中不起作用(harrison_papa-parse.js?hash = af12d7c ...&papaworker:14 Uncaught ReferenceError:包没有定义) –

+0

你是对的。该工作人员不在Meteor包中工作,因为它全部捆绑到一个文件中,但可以修改库代码,以便将工作人员函数(作为字符串)内联,将其放入“公共目录”或等待Meteor支持WebWorker构建目标(有人建议,不确定它会发生)。你仍然可以使用'step'函数,但是(如果你不使用worker,它仍会阻塞)。 – MasterAM

代码在一个线程中运行,所以即使你更新进度变量,它不会呈现到用户界面,直到完成文件的解析。

在用户界面中执行冗长的处理不是很好的做法 - 它变得没有响应,并且可能会导致浏览器崩溃,尤其是对于大型文件。

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

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

,如果你想保持处理在浏览器中

How to run an unblocking background task in a Meteor/JavaScript client?