<!doctype html>
<title>Run async code on a worker helper</title>
<script>
const workerCode = `
onmessage = function(e) {
const AsyncFunction = async function () {}.constructor;
let receivedFunction = new AsyncFunction(e.data);
receivedFunction().then(workerResult => {postMessage(workerResult);});
}
`
const workerBlob = new Blob ([workerCode], {type: 'text/javascript'});
const worker = new Worker(window.URL.createObjectURL(workerBlob));
async function runOnWorkerAndWaitForResult(code) {
worker.postMessage(code);
return new Promise((resolve, reject) => {
worker.onmessage = result => {
resolve(result.data);
}
worker.onerror = error => {
reject(error);
}
});
}
</script>