2011-03-14 7 views
0

Timerコンポーネントと同様のオブザーバパターンを実装したいと思います。時間の満了によってコールバックを呼び出す代わりに、トピックのオブザーバーであるコールバックは、システムイベント(新しいファイルの作成や新しい電子メールの受信など)から呼び出されます。コンポーネントXPCOMでnsIObserverServiceを使ってみましたが、コンポーネントの関数がNotifyObserversを使ってJavaScriptのオブザーバを呼び出せないようです。 NotifyObserversは、JavaScriptから呼び出されたときにのみ機能します。 (それはあなたのスクリプトによって作成されていますので)事前にXPCOMでコールバック

おかげ

+0

あなたのコードが間違っていると思われます。 'nsIObserverService'はここでうまくいくはずです。 – sdwilsh

+0

まあ、可能です。私は何かが間違っていることを認識していますが、私には何が間違っているか不明です。 コード:http://paste.ideaslabs.com/show/VCQjuHg2pE ヘッダー:http://paste.ideaslabs.com/show/FBtiY42Fuy IDL:http://paste.ideaslabs.com/show/DPCcdNYD4c JS例:http://paste.ideaslabs.com/show/UxdYXQUo82 "mycomp.observe"を呼び出すとエラーは表示されません。 – user12707

答えて

1

Example::Exampleは常にメインスレッドで実行されます。したがって、オブザーバーサービスへのプロキシーを作成することはありません。しかしExample::CallからEx::Runへの呼び出しはバックグラウンドスレッドで発生します。この場合、NotifyObserversへの呼び出しはNS_ERROR_UNEXPECTED(無視する)を返します。

関連する問題