如果启动两个使用相同JavaScript文件的web工作人员,则火狐无法在about:debugging#workers
中区分它们。你会得到两个相同的条目(列在“其他工人”下面)。
对于调试来说,为web工作人员分配名称是很方便的。例如,在Java中有Thread#setName。JavaScript的worker中有类似的东西吗?
发布于 2017-07-12 11:35:33
总之,我建议将the8472和Patrick提供的两种方法结合起来,以获得最佳的调试体验:
例如,而不是
let worker = new Worker(url);
写像这样的东西
let worker = new Worker(`${url}?name=SomeContext`, { name: 'Some useful context' });
至少在Firefox 54中,员工概述中没有显示可选的name参数。因此,扩展URL仍然很有用。另一方面,当您查看文献资料时,使用API (尽管我所看到的火狐目前没有使用它)似乎是个好主意。
名称:一个DOMString,指定代表工作人员作用域的DedicatedWorkerGlobalScope的标识名,它主要用于调试目的。
我希望浏览器在工作概述中显示名称(例如,火狐中的about:debugging#workers
),这会使URL扩展解决方法过时。
请注意,通过修改URL,浏览器可能会完成额外的工作,甚至可能通过网络获取额外的数据。根据您的用例,如果您打算在生产中使用解决方案,这可能是一个缺点。在我的具体案例中,概述不是一个问题,因为代码是静态服务的(它是浏览器扩展的一部分)。
发布于 2017-07-03 05:08:52
Worker()构造函数接受一个可选的选项参数,该参数可以包含一个name属性,例如:
let workerOne = new Worker(URL, {
'name' : 'nameOfWorkerOne'
}),
workerTwo = new Worker(URL, {
'name' : 'nameOfWorkerTwo'
});
很好,我忽略了这一点。你知道它是否便携吗?
上面链接的MDN页面上有一个与规范的链接。如果您跟随白兔,您将看到选项参数是规范的一部分。
它可以读取为工作人员中全局对象的名字属性,例如在调试器中。
https://stackoverflow.com/questions/44885803
复制