以尽可能少的开销通过引用将提交文件传递给 web worker
Pass submited file to web worker by refference with as little overhead as possible
我将有一个网络工作者来解析巨大的文本文件(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 线程不会因读取文件而变慢?
一些浏览器(找不到兼容性 table)支持通过 Web Worker postMessage
传递 File
对象,因为它们现在使用 structured clone algorithm 来处理消息参数。对于支持它的浏览器,这可能是最有效的方法。
Further research 似乎表明结构化克隆应该在以下平台上可用:Chrome 13+、Firefox 8+、IE10+、Opera 11.5+、Safari 5.1+
我将有一个网络工作者来解析巨大的文本文件(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 线程不会因读取文件而变慢?
一些浏览器(找不到兼容性 table)支持通过 Web Worker postMessage
传递 File
对象,因为它们现在使用 structured clone algorithm 来处理消息参数。对于支持它的浏览器,这可能是最有效的方法。
Further research 似乎表明结构化克隆应该在以下平台上可用:Chrome 13+、Firefox 8+、IE10+、Opera 11.5+、Safari 5.1+