Javascript 在angular 2中使用web worker
我使用Javascript 在angular 2中使用web worker,javascript,angular,typescript,angular-cli,web-worker,Javascript,Angular,Typescript,Angular Cli,Web Worker,我使用angular CLI创建了angular应用程序。我想使用webworker创建thread 我的想法是在后台线程中进行大量计算,并在完成后向主线程返回响应 我有worker.js self.addEventListener('message', (evt) => { switch (evt.data.cmd) { case 'CALCULATE':{ let payload = evt.data.payload; let response =
angular CLI
创建了angular应用程序。我想使用webworker
创建thread
我的想法是在后台
线程
中进行大量计算,并在完成后向主线程
返回响应
我有worker.js
self.addEventListener('message', (evt) => {
switch (evt.data.cmd) {
case 'CALCULATE':{
let payload = evt.data.payload;
let response = calculateFunction(payload);
let response = {
cmd: 'RESPONSE',
payload: response
}
postMessage(response);
break;
}
default:
throw Error(`Invalid command: ${evt.data.cmd}`);
}
});
在组件中:
private worker: Worker;
constructor() {
this.initWebWorker();
}
initWebWorker(){
let url = '/dist/assets/workers/worker.js';
this.worker = new Worker(url);
this.worker.addEventListener('message', (evt)=>{
switch (evt.data.cmd) {
case 'RESPONSE':{
let payload = evt.data.payload;
console.log(payload)
break;
}
default:
throw Error(`Invalid command: ${evt.data.cmd}`);
}
});
}
从组件向工人发布消息
this.worker.postMessage({cmd: 'CALCULATE', payload: payload});
这是预期的工作。但我还有几个问题要问
我已将worker.js
放在assets
文件夹中,以便在ng build
worker.js
是js
文件而不是TS
。我希望我可以使用TS
要使用TS
我可以在webpack.config
中添加条目
,它将为我生成包
。但我不想从angularcli
project中弹出网页包配置
我已经检查了这个包,但是我只能运行函数is thread,我希望在工作者文件中对所有与计算相关的函数进行代码分离
那么,如何更好地使用angularcli项目中的webworker
。我试图寻找相同的,但没有找到这方面的好文章
参考资料:我也在寻找实现它的方法!