worker.js
export default class WebWorker {
constructor(worker: WebWorker) {
let code = worker.toString();
code = code.substring(code.indexOf('{') + 1, code.lastIndexOf('}'));
const blob = new Blob([code],{type: 'text/javascript'});
return new Worker(URL.createObjectURL(blob));
}
}
demo.worker.js
import WebWorker from "./work";
export const MyWorker = () => {
function workerCode(this: any){
this.onmessage = function (e:MessageEvent){
const {a,b} = e.data;
this.postMessage({sum: a + b});
}
}
const myWorker = new WebWorker(workerCode);
return myWorker;
}
使用:
const worker = MyWorker();
worker.postMessage({
a:1,
b:2
});
worker.onmessage = (m:any) =>{
console.log("msg from worker: ",m.data); // 3
};