标签:html5 web-worker javascript
我有一个使用网络工作者清理indexedDB数据库的应用程序.我已经设置好它,因此可以从全局函数调用中启动它,如果该函数在完成之前再次调用,它不会重新启动,但是如果函数完成后被调用,它会通过创建一个新实例而重新启动工人.这一切对我来说都很好.
完成工作后,我是否需要从某种意义上删除,销毁或终止工作程序的旧实例?
解决方法:
Do I need to delete, destroy, terminate the old instance of the worker in any sense after it’s finished working?
在正常情况下,工作程序会注册一个事件处理程序以侦听来自主脚本的消息,因此,是的,如果要卸载该工作程序,则需要告诉它取消注册.您可以通过以下两种方式之一进行操作:
>向其发送一条消息,告诉它进行清理,并让工作人员通过注销所有事件处理程序来响应该消息.这使工作人员可以正常退出.
>使用Worker#terminate
,它会立即终止工作进程,而不会给它提供完成工作的任何机会.
如果工作程序没有在听消息,没有注册其他事件处理程序并且没有在循环中进行工作,则您无需执行任何特定的操作(但几率很低,工作程序几乎总是注册事件处理程序以监听消息).
…but if the function is called after it’s done it does restart, by creating a new instance of the worker.
我建议重新访问该设计.相反,只需创建一次工作程序,然后在每次需要它执行某项操作时向其发送一条消息,而不是每次都重新创建整个工作.
标签:html5,web-worker,javascript 来源: https://codeday.me/bug/20191025/1927304.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。