我的Firefox扩展程序正在解析大块数据。我通常会使用WebWorkers来做这件事,但是在XPCOM中我似乎不是一个选择。 ChromeWorker https://developer.mozilla.org/en-US/docs/Web/API/ChromeWorker似乎已过时,并且“在新项目中不鼓励”。
在Firefox扩展程序中是否有使用worker的选项?
答案 0 :(得分:1)
简短版本:不,您无法从其他线程访问XPCOM。但这并不意味着你不能使用铬工人。
长版本:Firefox曾经允许从其他线程访问XPCOM,例如通过ChromeWorker
。这导致了各种各样的问题,如奇怪的崩溃或只是普通的不一致行为。最后,Mozilla决定支持多线程XPCOM访问过于复杂和容易出错,因为它记录了它的局限性并阻止人们自己站起来。
使用当前的Firefox版本,无法再从ChromeWorker
访问XPCOM。但是ChromeWorker
本身并没有被弃用,但即使MDN注释很容易被误读为一般的弃用声明。我们的想法是将ChromeWorker
与js-ctypes结合使用,这将允许您使用本机库(操作系统提供的库,Firefox中包含的库,如NSS和随扩展程序一起分发的库)在另一个线程上。
根据您要实现的目标,这可能对您有用。例如,如果您需要XPCOM进行文件访问,那么您甚至不需要直接使用js-ctypes - OS.File API将为您执行此操作。但是,XPCOM访问仅限于主线程。