Table of Contents
References
Support
return `Worker supported: ${!!window.Worker}`
Implementation
Check if web server has up to date content yet? This delay is really why we need a service worker in the first place.
return (async fn => {
const resp = await fetch('./worker.js')
return resp.status + "\n" + (await resp.text())
})()
Testing
Current REPL results in script execution from cross-origin? Due to data:uri was resolving the raw event from postMessage not ev.data
which is necessary.
return new Promise((resolve,reject) => {
let myWorker;
try {
myWorker = new Worker('worker.js')
myWorker.onmessage = (ev) => {
if (ev.data === 'done') resolve(ev.data)
else console.log(ev.data)
}
myWorker.onerror = (err) => {
resolve({msg: "worker.onerror: " + err.message + " (" + err.filename + ":" + err.lineno + ")", err, err},)
}
} catch(err) {
resolve({msg: "Caught err", err})
}
})
return new Promise((resolve,reject) => {
let myWorker;
try {
myWorker = new Worker('/web.bundle.js')
myWorker.onmessage = (ev) => {
if (ev.data === 'done') resolve(ev.data)
else console.log(ev.data)
}
myWorker.onerror = (err) => {
resolve({msg: "worker.onerror: " + err.message + " (" + err.filename + ":" + err.lineno + ")", err})
}
} catch(err) {
resolve({msg: "Caught err", err})
}
})
return (async fn =>{
const url = "https://dotlit.org/web.bundle.js"
const lineno = 177281
const spread = 10
const resp = await fetch(url)
console.log(resp.status)
const val = await resp.text()
const lines = val.split("\n")
console.log(lines.length, "lines")
return lines.map((l,i) => {
if (i ===lineno-1) return ">>>" + l
else return "" + i + " " + l
}).slice(lineno - spread, lineno + spread).join("\n")
})()