【问题标题】:Pass submited file to web worker by refference with as little overhead as possible以尽可能少的开销通过引用将提交文件传递给 Web Worker
【发布时间】:2015-10-23 15:22:16
【问题描述】:

我将有一个网络工作者来解析巨大的文本文件(200000 行,不过语法很简单)。我希望用户通过拖放或其他方式提交该文件,获得File 对象:

   var work = new Worker("parser.js")
   document.addEventListener("drop", function(e) {
       e.preventDefault();
       var dt    = e.dataTransfer;
       var files = dt.files;
       if(files.length>0) {
         var firstFile = files[0]
         var reader = new FileReader();
         //SEND FILE TO WORKER?
       }
   });

我听说过Transferable objects。有没有办法将文件传输到 Worker?以某种方式读取文件不会减慢 GUI 线程?

【问题讨论】:

标签: javascript web-worker fileapi transferable


【解决方案1】:

某些浏览器(找不到兼容性表)支持通过网络工作者postMessage 传递File 对象,因为它们现在使用structured clone algorithm 来处理消息参数。对于那些支持它的浏览器来说,这可能是最有效的方法。

Further research 似乎表明结构化克隆应该适用于:Chrome 13+、Firefox 8+、IE10+、Opera 11.5+、Safari 5.1+

【讨论】:

  • 这基本上意味着文件在打开之前就通过了,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2015-08-15
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多