Passing typed arrays and array buffers
by Darker
HTML
<h1>
Passing typed arrays and array buffers.
</h1>
JavaScript
function workerFN() {
self.onmessage = function(e) {
switch(e.data.name) {
case "buffer" :
console.log("Array buffer:", new Float64Array(e.data.data))
break;
case "array":
console.log("Array:", e.data.data);
break;
default:
console.error("Unknown message:", e.data.name);
}
}
}
// This is a trick to generate real worker script that is loaded from server
var url = "/echo/js/?js="+encodeURIComponent("("+workerFN.toString()+")()");
// THE CONSTRUCTOR OVERRID
var worker = new Worker(url);
worker.addEventListener("error", function(e) {
console.warn("Worker error:", e);
});
worker.addEventListener("messageerror", function(e) {
console.warn("Message error:", e);
});
var arrayBuffer = new Float64Array([1,2,3,4,5]).buffer;
var array = new Float64Array([1,2,3,4,5])
worker.postMessage({name:"buffer", data:arrayBuffer}, [arrayBuffer]);
worker.postMessage({name:"array", data:array}, [array.buffer]);
console.log("Buffer sent:", arrayBuffer);
console.log("Array sent:", array, "The internal buffer is now empty:", array.buffer)