2011-03-14 5 views
0

타이머 구성 요소와 비슷한 옵저버 패턴을 구현하고 싶습니다. 시간 만료에 따라 콜백을 호출하는 대신 항목의 옵저버 인 콜백은 새 파일 생성 또는 새 전자 메일 수신과 같은 시스템 이벤트에서 호출됩니다. 구성 요소 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 (무시합니다)을 반환한다고 생각합니다.