javascript - 以尽可能少的开销通过引用将提交文件传递给 web worker

标签 javascript web-worker fileapi transferable

我将有一个网络 worker 来解析巨大的文本文件(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 线程不会因读取文件而变慢?

最佳答案

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

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

关于javascript - 以尽可能少的开销通过引用将提交文件传递给 web worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306015/

相关文章:

javascript - 使用纯 JavaScript 隐藏显示具有给定类名的表行

javascript - jquery 关闭时销毁模式对话框

javascript - ionic 2 中的 Webpack 和 Web Workers

cors - Web worker 被 Cypress 上的 self.crossOriginIsolated 阻止

iframe - 在 iframe 中加载渐进式 Web 应用程序

ajax - IOS6 和 Safari 照片上传 - 文件 API + Canvas + jQuery Ajax 异步上传和调整文件大小

javascript - 什么时候用??和 ?作为 node-mysql 中用于构建查询的占位符?

javascript - 无法在 React UI 中呈现过滤后的数组值

javascript - 如何在 webworkers 中访问 websockets?

javascript - 通过 Crypto.js 获取文件的 md5sum