首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >您能给Web工作人员指定一个名称吗?

您能给Web工作人员指定一个名称吗?
EN

Stack Overflow用户
提问于 2017-07-03 12:37:48
回答 2查看 1.6K关注 0票数 7

如果启动两个使用相同JavaScript文件的web工作人员,则火狐无法在about:debugging#workers中区分它们。你会得到两个相同的条目(列在“其他工人”下面)。

对于调试来说,为web工作人员分配名称是很方便的。例如,在Java中有Thread#setName。JavaScript的worker中有类似的东西吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-12 19:35:33

总之,我建议将the8472和Patrick提供的两种方法结合起来,以获得最佳的调试体验:

  1. 通过worker设置名称(详细信息,请参阅8472的答案)
  2. 在URL中添加一个虚拟参数,因此它将显示在Firefox中(有关详细信息,请参阅帕特里克·埃文斯的回答)

例如,而不是

代码语言:javascript
代码运行次数:0
运行
复制
let worker = new Worker(url);

写像这样的东西

代码语言:javascript
代码运行次数:0
运行
复制
let worker = new Worker(`${url}?name=SomeContext`, { name: 'Some useful context' });

至少在Firefox 54中,员工概述中没有显示可选的name参数。因此,扩展URL仍然很有用。另一方面,当您查看文献资料时,使用API (尽管我所看到的火狐目前没有使用它)似乎是个好主意。

名称:一个DOMString,指定代表工作人员作用域的DedicatedWorkerGlobalScope的标识名,它主要用于调试目的。

我希望浏览器在工作概述中显示名称(例如,火狐中的about:debugging#workers ),这会使URL扩展解决方法过时。

请注意,通过修改URL,浏览器可能会完成额外的工作,甚至可能通过网络获取额外的数据。根据您的用例,如果您打算在生产中使用解决方案,这可能是一个缺点。在我的具体案例中,概述不是一个问题,因为代码是静态服务的(它是浏览器扩展的一部分)。

票数 1
EN

Stack Overflow用户

发布于 2017-07-03 13:08:52

Worker()构造函数接受一个可选的选项参数,该参数可以包含一个name属性,例如:

代码语言:javascript
代码运行次数:0
运行
复制
let workerOne = new Worker(URL, {
  'name' : 'nameOfWorkerOne'
}),
    workerTwo = new Worker(URL, {
  'name' : 'nameOfWorkerTwo'
});

很好,我忽略了这一点。你知道它是否便携吗?

上面链接的MDN页面上有一个与规范的链接。如果您跟随白兔,您将看到选项参数是规范的一部分。

它可以读取为工作人员中全局对象的名字属性,例如在调试器中。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44885803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档