You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bit4sat/web/src/workerInterface.js

54 lines
877 B
JavaScript

class Worker {
constructor(script) {
if (window.Worker) {
this.worker = new window.Worker(script);
this.worker.onmessage = this.onmessage()
this.listeners = {}
this.post({
msg: 'init'
})
}
}
listenTo(ev, callback) {
this.listeners[ev] = callback
}
onmessage() {
let self = this
return function(e) {
if ((e.data.msg in self.listeners) === true) {
self.listeners[e.data.msg](e)
}
}
}
post(m) {
this.worker.postMessage(m)
}
}
const workers = {
'main': new Worker('./worker.js')
}
function getWorker(name){
if (name in workers) {
return workers[name];
} else {
console.log(`unknown worker ${name}`)
}
}
export default getWorker;