2011-08-11 15 views
14

Digamos, quiero incrementar un contador cada vez que recibo una respuesta de ajax. No sé sobre el modelo de concurrencia con eventos de sincronización de JavaScript. Alguna idea ?¿Cómo lograr operaciones atómicas (modelo de concurrencia) en JavaScript?

+0

Ver los comentarios [sobre una respuesta a otro tema] (http://stackoverflow.com/questions/6944748/is-there-an-ie-render-complete-event/6987573#6987573). Esencialmente, todos los scripts se alinean para su ejecución y nunca hay 2 scripts ejecutándose al mismo tiempo. Si se está ejecutando un script, los guiones recién activados (activados por los eventos causados ​​por el usuario o por las solicitudes AJAX) se ponen en una cola. Por lo tanto, no hay problemas de concurrencia en JavaScript, ya que no hay concurrencia disponible. –

+2

¿Qué quiere decir con que no se ejecutan dos scripts al mismo tiempo? ¿Qué cuenta exactamente como una unidad de script en tu definición? – smartnut007

+0

Supongo que lo que se entiende por "script" debe ser la respuesta completa, por parte de todo el JavaScript que se ha cargado, a un evento determinado. – Shavais

Respuesta

17

En un navegador, solo hay un hilo de JavaScript ejecutándose a la vez.

Se pueden producir problemas de simultaneidad en el sentido de que, aunque hay una respuesta ajax pendiente, JavaScript puede ejecutarse en respuesta a un evento no relacionado. Pero está a salvo si no inicia una operación destinada a ser atómica antes de una llamada ajax y termina en el controlador de respuesta.

+1

Sí. Cada evento se maneja atómicamente. – JGWeissman

Cuestiones relacionadas