Ich muss eine asynchrone ausführende Aufgabe (reines JS) erstellen, die mit XPCOM-Komponenten erstellt und arbeitet (mit Components.classes und Components.interfaces). Worker und ChromeWorker haben jedoch keinen Zugriff auf Komponenten. Außerdem kann ich ihnen keine XPCOM-Komponente übergeben, die im Hauptthread (postMessage) erstellt wurde, da XPCOM-Komponenten nicht serialisierbar sind.Asynchroner Task, der Zugriff auf XPCOM-Komponenten hat: Ist das möglich?
Es scheint, dass es mit nsIThread und nsIThreadManager möglich sein kann, aber Dokumentation besagt, dass
In Versionen von Gecko vor 2.0 ist es möglich, echte asynchrone Threads zu erstellen. Obwohl dies oft ohne ernsthafte Nebenwirkungen erreicht werden kann, ist es weit von sicher und führt oft zu unvorhersehbaren Abstürzen. Aus diesem Grund ist es seit Gecko 2.0 nicht mehr möglich JavaScript-Objekte von einem Thread an einen anderen zu übergeben, wodurch der Thread-Manager aus JavaScript nicht mehr nutzbar ist.
und ich möchte keine Inkompatibilität mit Gecko 2.0 einführen.
Gibt es andere Möglichkeiten, das zu tun?
P. S. Ich finde (Chrome) Workers kaum brauchbar, da sie weder Zugriff auf das DOM noch auf Komponenten haben. Warum würde man sie jemals benutzen wollen?
Dank. Es scheint, dass Workers und meine eigene XPCOM-Komponente in meinem Fall ziemlich unnötige Dinge sind. Es wird ein Firefox-Extension-Objekt und viel Asynch-Code geben, aufgeteilt in Teile. – user1292168