XPCOM使用Firefox扩展中的Web Workers

时间:2014-01-14 08:09:45

标签: firefox firefox-addon web-worker xpcom

我的Firefox扩展程序正在解析大块数据。我通常会使用WebWorkers来做这件事,但是在XPCOM中我似乎不是一个选择。 ChromeWorker https://developer.mozilla.org/en-US/docs/Web/API/ChromeWorker似乎已过时,并且“在新项目中不鼓励”。

在Firefox扩展程序中是否有使用worker的选项?

1 个答案:

答案 0 :(得分:1)

简短版本:不,您无法从其他线程访问XPCOM。但这并不意味着你不能使用铬工人。

长版本:Firefox曾经允许从其他线程访问XPCOM,例如通过ChromeWorker。这导致了各种各样的问题,如奇怪的崩溃或只是普通的不一致行为。最后,Mozilla决定支持多线程XPCOM访问过于复杂和容易出错,因为它记录了它的局限性并阻止人们自己站起来。

使用当前的Firefox版本,无法再从ChromeWorker访问XPCOM。但是ChromeWorker本身并没有被弃用,但即使MDN注释很容易被误读为一般的弃用声明。我们的想法是将ChromeWorkerjs-ctypes结合使用,这将允许您使用本机库(操作系统提供的库,Firefox中包含的库,如NSS和随扩展程序一起分发的库)在另一个线程上。

根据您要实现的目标,这可能对您有用。例如,如果您需要XPCOM进行文件访问,那么您甚至不需要直接使用js-ctypes - OS.File API将为您执行此操作。但是,XPCOM访问仅限于主线程。