My very first web worker
Serializing the shit out of everything!
by borkdude
HTML
<p><button>Post message</button></p>
<input type="text" value="(+ 1 2 3)"/>
<script type="text/ww">
(async function() {
await import('https://cdn.jsdelivr.net/npm/scittle@0.6.17/dist/scittle.js');
self.onmessage = function(e) {
var res = scittle.core.eval_string(e.data.code);
self.postMessage({val: res});
};
})();
</script>
JavaScript
try {
var ww = document.querySelector('script[type="text/ww"]'),
code = ww.textContent,
blob = new Blob([code], {type: 'text/javascript'}),
blobUrl = URL.createObjectURL(blob),
worker = new Worker(blobUrl);
var _start,
btn = document.querySelector('button');
worker.onmessage = function(e) {
var log = document.createElement('p');
log.innerHTML = 'Response: <pre>' + e.data.val + '</pre>';
document.body.appendChild(log);
};
function processInput(e) {
var o = document.querySelector("input").value;
worker.postMessage({code: o});
};
btn.onclick = processInput;
document.addEventListener("DOMContentLoaded", processInput, false);
}
catch (ex) {
alert(ex);
}