Phi*_*ßen 5 javascript debugging firefox web-worker
如果您启动两个使用相同JavaScript文件的Web工作者,则Firefox无法区分它们about:debugging#workers
.您将获得两个相同的条目(在"其他工人"下列出).
对于调试,为web worker分配名称会很方便.例如,在Java中有Thread #setName.JavaScript的Web worker API中是否有相同的东西?
的工人()构造有一个可选选项参数,它可以包含一个名称属性,例如:
let workerOne = new Worker(URL, {
'name' : 'nameOfWorkerOne'
}),
workerTwo = new Worker(URL, {
'name' : 'nameOfWorkerTwo'
});
Run Code Online (Sandbox Code Playgroud)
很好,我忽略了这一点.你知道它是否便携?
在上面链接的MDN页面上有一个指向规范的链接.如果您按照白兔,您将看到options参数是规范的一部分.
它可以作为worker中全局对象的name属性读取,例如在调试器中.
总之,我建议结合 the8472 和 Patrick Evans 提供的两种方法来获得最佳的调试体验:
例如,代替
let worker = new Worker(url);
Run Code Online (Sandbox Code Playgroud)
写这样的东西
let worker = new Worker(`${url}?name=SomeContext`, { name: 'Some useful context' });
Run Code Online (Sandbox Code Playgroud)
至少在 Firefox 54 中,可选的 name 参数不会显示在工作器概述中。因此,扩展URL还是有用的。另一方面,当您查看文档时,使用 API(尽管据我所知 Firefox 目前并未使用该 API)似乎是一个好主意:
name:一个 DOMString,指定 DedicatedWorkerGlobalScope 的标识名称,表示工作线程的范围,主要用于调试目的。
我希望浏览器能够在工作器概述中显示名称(例如,about:debugging#workers
在 Firefox 中),这将使 URL 扩展解决方法过时。
请注意,通过修改 URL,浏览器最终可能会执行额外的工作,甚至可能通过网络获取额外的数据。根据您的用例,如果您打算在生产中使用该解决方法,这可能会是一个缺点。在我的具体情况下,概述不是问题,因为代码是静态提供的(它是浏览器扩展的一部分)。
归档时间: |
|
查看次数: |
488 次 |
最近记录: |