2010-06-30 11 views
2

Je me demande s'il y a un moyen de synchroniser des objets/méthodes JavaScript de manière similaire que vous pouvez le faire en Java. Je développe une interface pour le nouveau WebSocket dans html5 et ai besoin d'un moyen de faire correspondre les demandes sortantes avec les réponses entrantes. Par conséquent, je sauvegarde les requêtes (avec un identifiant unique) dans un tableau du côté client, puis je parcourt le tableau lorsque je reçois une réponse à la recherche de la requête correspondante.Synchronisez un tableau avec javascript

Un problème qui pourrait se produire sur le côté client est si je plusieurs minuteries qui font des demandes au serveur, indépendamment les uns des autres. Si une fonction request insère un "request-reference" dans le tableau en même temps que le respond-listener parcourt le tableau, il risque de se casser!

Alors, comment puis-je résoudre ce problème? Mon idée initiale était de simplement synchroniser le tableau comme on aurait pu le faire en Java (en plaçant un verrou sur l'objet et en forçant les autres fonctions à attendre) mais je n'ai trouvé aucune syntaxe de la façon de le faire en JavaScript.

Répondre

3

Javascript fonctionne dans un seul thread dans le navigateur, donc il n'y a pas besoin de synchroniser.

Voir here pour plus de détails. Voir this SO question et réponses aussi (Pourquoi JavaScript ne supporte pas le multithreading?).

+1

sauf si vous utilisez les travailleurs: voir https://developer.mozilla.org/en/Using_web_workers mais même alors vous devez travailler très dur pour causer des problèmes dans votre code – Redlab