JSFiddle - React, Tailwind, and code Playground
HTML
<script id="js-worker">
onmessage = function(evt) {
var buffers = evt.data.buffers;
var count = 0;
for (var i = 0; i < buffers.length; i++) {
var array = new Uint8Array(buffers[i]);
for (var j = 0; j < array.length; j++) {
array[j] = count++;
}
}
var message = {buffers: buffers};
console.log(message);
postMessage(message, buffers);
}
</script>
<button id="post">Post</button>
JavaScript
var blob = new Blob(
[document.getElementById('js-worker').textContent],
{type: "text/javascript"});
var url = URL.createObjectURL(blob);
var worker = new Worker(url);
worker.onmessage = function (evt) {
var buffers = evt.data.buffers;
console.log(evt);
alert("Received these buffers,\n" +
JSON.stringify(buffers.map(function (buffer) {
return Array.prototype.slice.call(
new Uint8Array(buffer));
})));
}
document.getElementById('post').addEventListener('click', function() {
var buffers = [new ArrayBuffer(8), new ArrayBuffer(16)];
var message = {buffers: buffers};
worker.postMessage(message, buffers);
assert(buffers[0].byteLength == 0);
assert(buffers[1].byteLength == 0);
});
function assert(cond) { if (!cond) alert("fail!"); }