使用 XPCOM 回调

发布于 2024-10-22 04:55:14 字数 214 浏览 5 评论 0原文

我想实现类似于计时器组件的观察者模式。不是按时间到期调用回调,而是从系统事件(如创建新文件或收到新电子邮件等)调用作为主题观察者的回调。我尝试在组件 XPCOM 中使用 nsIObserverService,但组件中的函数似乎无法使用 NotifyObservers 调用 JavaScript 中的观察者。 NotifyObservers 仅在从 JavaScript 调用时才起作用。

提前致谢

I would like to implement the observer pattern similar to Timer component. Instead of calling a callback by time expiration, the callbacks that are observers of a topic would be called from system events (like new file created, or a new e-mail received, etc.). I tried using nsIObserverService in the component XPCOM, but it seems that functions from component aren't able to call observers in JavaScript by using NotifyObservers. The NotifyObservers only works when is called from JavaScript.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

话少情深 2024-10-29 04:55:14

Example::Example 始终在主线程上运行(因为它是由您的脚本创建的)。因此它永远不会创建观察者服务的代理。但是从 Ex::RunExample::Call 的调用发生在后台线程上,我认为在这种情况下对 NotifyObservers 的调用返回 NS_ERROR_UNEXPECTED (您忽略它)。

Example::Example always runs on the main thread (because it's being created by your script). So it never creates a proxy to the observer service. But the call to Example::Call from Ex::Run happens on the background thread, and I think in this case the call to NotifyObservers returns NS_ERROR_UNEXPECTED (which you ignore).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文