Javascript 如何创建子工作者?

Javascript 如何创建子工作者?,javascript,dom,web-worker,Javascript,Dom,Web Worker,阅读了很多文章,但没有一篇给出了如何创建子工作者的明确答案?据我所知,有一种方法可以直接从一个webworker中完成,但我找到的唯一方法是installScript(),尽管它看起来更像是一种脚本注入。是否有人可以分享一个示例,说明如何创建一个,以及工作人员如何在每个其他人之间进行通信?子工作人员的生成方式与创建普通专用工作人员的方式完全相同: var worker = new Worker("worker.js"); worker.onmessage = function(event) {

阅读了很多文章,但没有一篇给出了如何创建子工作者的明确答案?据我所知,有一种方法可以直接从一个webworker中完成,但我找到的唯一方法是installScript(),尽管它看起来更像是一种脚本注入。是否有人可以分享一个示例,说明如何创建一个,以及工作人员如何在每个其他人之间进行通信?

子工作人员的生成方式与创建普通专用工作人员的方式完全相同:

var worker = new Worker("worker.js");
worker.onmessage = function(event) {
    ...
};
消息也以相同的方式从工作进程内发送到子工作进程,例如

worker.postMessage({cmd: 'start'});
您可以在上找到一个示例(包括测试它的链接)。 但目前支持子工作程序的浏览器只有FirefoxEdge。不幸的是,Chrome、Safari、Opera和Android浏览器(Nougat)还没有实现这一功能,尽管这有助于进一步提高多核系统的性能

据一位7岁的Chrome用户表示,他们似乎不太可能实现规范的这一部分

如果您想保持浏览器兼容性,唯一的方法是从主线程(它也管理DOM/UI)生成所有工作线程,并通过来回路由消息来增加它的负担

假设您想创建一个名为“handler”的工作程序,然后生成子工作程序并来回路由消息,您可以将该处理程序更改为伪工作程序(不在单独的线程中),但通过在“handler”的顶部添加此代码并用
new PseudoWorker()实例化它,将代码更改保持在最小值而不是
新工作程序(“handler.js”)(当然,您必须在网页中添加对“handler.JS”的JS引用,以便它能够找到类PseudoWorker):

唯一需要注意的是,伪工作者不会自动开始工作,而是在收到消息后才开始工作。这样就可以正确初始化变量。
但该代码适用于上述所有浏览器。只要浏览器支持子工作区,您就可以从伪工作区切换回普通工作区。

子工作区的生成方式与普通专用工作区的创建方式完全相同:

var worker = new Worker("worker.js");
worker.onmessage = function(event) {
    ...
};
消息也以相同的方式从工作进程内发送到子工作进程,例如

worker.postMessage({cmd: 'start'});
您可以在上找到一个示例(包括测试它的链接)。 但目前支持子工作程序的浏览器只有FirefoxEdge。不幸的是,Chrome、Safari、Opera和Android浏览器(Nougat)还没有实现这一功能,尽管这有助于进一步提高多核系统的性能

据一位7岁的Chrome用户表示,他们似乎不太可能实现规范的这一部分

如果您想保持浏览器兼容性,唯一的方法是从主线程(它也管理DOM/UI)生成所有工作线程,并通过来回路由消息来增加它的负担

假设您想创建一个名为“handler”的工作程序,然后生成子工作程序并来回路由消息,您可以将该处理程序更改为伪工作程序(不在单独的线程中),但通过在“handler”的顶部添加此代码并用
new PseudoWorker()实例化它,将代码更改保持在最小值而不是
新工作程序(“handler.js”)(当然,您必须在网页中添加对“handler.JS”的JS引用,以便它能够找到类PseudoWorker):

唯一需要注意的是,伪工作者不会自动开始工作,而是在收到消息后才开始工作。这样就可以正确初始化变量。 但该代码适用于上述所有浏览器。只要浏览器支持子工作区,就可以从伪工作区切换回普通工作区