J'ai créé un objet XPCOM en C++ pour une extension FireFox. J'utilise un thread de travail pour écouter un événement et quand cela arrive, j'ai besoin de faire des choses sur le thread principal. Évidemment, je ne peux pas m'asseoir et attendre en JavaScript sur le fil principal parce que vous devez pouvoir employer le navigateur (mon événement se produit très rarement). J'ai essayé de le faire dans le thread (xpcom guy envoie javascript un événement): window.setTimeout (myImportantWorkFunction, 100);Comment communiquer entre threads en JavaScript?
Cela fonctionne (sur le thread principal, comme prévu), mais il va s'arrêter indéfiniment; cela n'arrive pas après 100ms comme prévu. Vous devez cliquer autour d'un peu ou redimensionner la fenêtre et soudainement la fonction est appelée. Comme JavaScript s'est réveillé soudainement. Je suppose que c'est parce que ça se passe dans un fil.
Y a-t-il une meilleure façon pour le travailleur de demander au thread principal de faire quelque chose?
J'ai réalisé que j'étais en train de répondre à une question complètement différente dans ma réponse originale (depuis effacée), puis j'ai commencé à écrire une nouvelle réponse et j'ai réalisé que j'écrivais juste ce que tu disais: D: ! – olliej
L'alerte ne se produira pas; Je peux attendre aussi longtemps que je le souhaite (j'ai attendu 20+ minutes) et l'alerte ne s'est pas affichée avant quelques secondes après que j'ai cliqué dans la fenêtre. Le thread a été créé dans l'extension (pthread) et il essaie d'utiliser le rappel. Si je travaille dans le rappel, crash. Donc je fais setTimeout. – Paul