Angular 角度-节省创建和处理内联web Worker

Angular 角度-节省创建和处理内联web Worker,angular,google-chrome,firefox,web-worker,Angular,Google Chrome,Firefox,Web Worker,我的用例是,我想在angular库中使用web workers来运行繁重的计算 从那时起,我就考虑使用下面所示的服务。我创建了两个内联工人,分别在5秒和10秒后终止他们。在Firefox开发工具中,我可以看到第二个和第三个线程相应地消失了 现在我的问题是 worker.terminate是否可以安全地处理所有内容,这样我就不必担心内存泄漏? 这种创建web Worker的方法是否存在严重的安全问题? 有没有办法检查chrome开发工具上所有正在运行的web工作人员? 从“@angular/cor

我的用例是,我想在angular库中使用web workers来运行繁重的计算

从那时起,我就考虑使用下面所示的服务。我创建了两个内联工人,分别在5秒和10秒后终止他们。在Firefox开发工具中,我可以看到第二个和第三个线程相应地消失了

现在我的问题是

worker.terminate是否可以安全地处理所有内容,这样我就不必担心内存泄漏? 这种创建web Worker的方法是否存在严重的安全问题? 有没有办法检查chrome开发工具上所有正在运行的web工作人员? 从“@angular/core”导入{Injectable}; @注射的 导出类WebWorkerService{ 建造师{ 这是5000美元; 这是10000美元; } 创建终止{ const worker=this.createWorkerdata=>{ 邮件后“测试”; }; worker.onmessage=e=>{ console.log'msg',e; 设置超时=>{ 工人。终止; },终止; }; worker.postMessage'hi'; } createWorkerfn:=>void{ const blob=new blob['self.onmessage=',fn.toString]{ 键入:“text/javascript”, }; const url=url.createObjectURLblob; 返回新的Workerurl; } } 对 不 是的,在开发工具的源代码面板中,您将看到由当前选项卡启动的所有线程。 但这并不意味着你所做的是一个好主意。 启动辅助线程是一项非常苛刻的操作,涉及大量IO,占用大量内存,甚至会减慢主线程的速度。 :

一般来说,Worker的寿命较长,启动性能成本较高,每个实例的内存成本较高


因此,不要启动大量的worker,只启动一个worker并与之通信,这样它就可以在页面的整个生命周期中执行您希望它执行的操作。最好让一个相当长的脚本在Worker中闲置,而不是为你想做的每一个简单算术操作启动一台新计算机。

谢谢!这正是我需要的信息: