Chrome では 100、FireFox では 0 を示すfiddleがあります。どちらも最新の安定版リリースでテスト済みです。
WebWorker コード:
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 です)。