Вы должны использовать Chrome Workers, они предназначены специально для использования js-ctypes в другом потоке. У менеджера потоков есть проблемы, и использование его из JavaScript было запрещено по причине. Однако основная проблема заключается в том, что конструктор ChromeWorker
не отображается в модулях SDK для дополнений. Но вы можете получить его из chrome
псевдомодуля:
var self = require("sdk/self");
var {ChromeWorker} = require("chrome");
var worker = new ChromeWorker(self.data.url("worker.js"));
Это работает только начиная с Firefox 8, в более ранних версиях вы использовали бы рабочую фабрику . Но я думаю, что вам это не нужно - новые версии SDK для дополнений в любом случае не поддерживают ничего, кроме Firefox 9.
Примечание : Вы должны обязательно выключить этого работника, если ваша надстройка отключена или удалена (например, с помощью unload
module ), это не произойдет автоматически .
Редактировать : Мэтью Раттли описывает более простой подход к импорту рабочих в Chrome в своем подробном сообщении в блоге , я соответствующим образом обновил этот ответ.