这是一个 fiddle,它在 Chrome 上显示 100,在 FireFox 上显示 0。两者都在最新的稳定版本上进行了测试。
网络工作者代码:
self.onmessage = function(event) {
postMessage({len: event.data.arr.length});
};
主要代码:
var worker = new Worker("worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
var arr = new Uint8Array(100);
worker.postMessage({
arr: arr
}, [arr.buffer]);
两者都支持可转移阵列。如果我删除[arr.buffer]
它发送它的参数很好,但是我失去了性能增益,它会恢复到结构化克隆。
我怎样才能使这在两个浏览器上都能工作,同时保持可转移的行为?
(顺便说一句,我实际上使用了多个数组,它们总共大约 10MB)。