Я создал объект XPCOM в C ++ для расширения FireFox. Я использую рабочий поток для прослушивания события, и когда это происходит, мне нужно что-то делать в основном потоке. Очевидно, что я не могу просто сидеть и ждать в JavaScript в основном потоке, потому что вам нужно иметь возможность использовать браузер (мое событие происходит очень редко).
Я пытался сделать это в потоке (парень xpcom отправляет javascript событие):
window.setTimeout( myImportantWorkFunction, 100 );
Это работает (в главном потоке, как и предполагалось), но будет приостановлено на неопределенный срок. это не произойдет после 100 мс, как задумано. Вы должны немного щелкнуть или изменить размер окна, а затем внезапно вызывается функция. Как будто JavaScript внезапно проснулся. Я предполагаю, что это потому, что это происходит в потоке.
Есть ли какой-нибудь лучший способ для работника попросить главный поток что-то сделать?