(Components.classesとComponents.interfacesを使用して)XPCOMコンポーネントを作成して作業する非同期実行タスク(pure JS)を作成する必要があります。 ただし、WorkerとChromeWorkerはコンポーネントにアクセスできません。また、XPCOMコンポーネントはシリアライズできないため、メインスレッド(postMessage)で作成されたXPCOMコンポーネントを渡すことはできません。XPCOMコンポーネントにアクセスできる非同期タスクは可能ですか?
nsIThreadとnsIThreadManagerで可能できるようですが、ドキュメントは2.0より前のGeckoのバージョンで
が、本当の非同期スレッドを作成することが可能であると述べています。 これは深刻な悪影響なしに達成することができますが、それは安全ではありません。 としばしば予期しないクラッシュが発生します。このため、Gecko 2.0以降、スレッドマネージャー をJavaScriptから使用できないようにするために、ある種のスレッドから別のスレッドにJavaScriptオブジェクトを渡すことができなくなりました( )。
私はGecko 2.0との互換性を導入したくありません。
他の方法がありますか?
P. S.(Chrome)WorkerはDOMやコンポーネントにアクセスできないため、ほとんど使用できません。なぜ彼らはそれを使いたいのですか?
ありがとうございます次の処理ステップ、このような何かをスケジュールする
nsIEventTarget.dispatch()
を使用することができます。私の場合、Workersと自分のXPCOMコンポーネントは非常に不必要なものです。 1つのFirefox拡張オブジェクトと多くの非同期コードが分割されています。 – user1292168