我在 C++ 中为 FireFox 扩展创建了一个 XPCOM 对象。我正在使用工作线程来监听事件,当它发生时,我需要在主线程上做一些事情。显然,我不能只是坐在主线程上的 JavaScript 中等待,因为您需要能够使用浏览器(我的事件很少发生)。
我尝试在线程中执行此操作(xpcom guy 向 javascript 发送事件):
window.setTimeout( myImportantWorkFunction, 100 );
这有效(在主线程上,如预期的那样),但它会无限期地暂停。它不会按预期在 100 毫秒后发生。您必须单击一下或调整窗口大小,然后突然调用该函数。就像 JavaScript 突然醒了。我认为这是因为它发生在一个线程中。
工人有没有更好的方法让主线程做点什么?