SharedWorke
by Maksim Kalenich
HTML
<script src="https://cdn.jsdelivr.net/gh/eu81273/jsfiddle-console/console.js"></script>
<script type="javascript/worker">
let i = 0;
onconnect = (ev) => {
i++;
let port = ev.ports[0];
port.onmessage = (e) => {
port.postMessage(`Result: ${e.data[0] * e.data[1]}`);
port.postMessage(i);
}
};
</script>
JavaScript
function BlobWorker() {
let js = document.querySelector('[type="javascript/worker"]').textContent;
let blob = new Blob([js], {
"type": "text/plain"
});
return URL.createObjectURL(blob);
}
if (!!window.SharedWorker) {
let source = BlobWorker();
let worker = new window.SharedWorker(source);
worker.port.onmessage = (e) => {
console.log(e.data, e.lastEventId);
};
worker.port.postMessage([3, 5]);
console.log("Message posted to worker");
}