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