Todavía soy nuevo en Javascript. Estoy desarrollando una página simple donde hago clic en un botón para obtener un valor en un servlet y lo visualizo. Funciona bien, a menos que haga clic como loco en el botón. A veces, el resultado mostrado es nulo.¿Las llamadas a los métodos de Javascript son seguras o sincronizadas?
me pregunto si esto es causado por las llamadas simultáneas a la misma función siguiente:
function loadXMLDoc2(retr) {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
$("#" + retr).button('option', 'label', xmlhttp.responseText);
// document.getElementById(retr).innerHTML=xmlhttp.responseText;
}
}
var param = "cmd=" + encodeURIComponent(retr);
document.getElementById("TOP_LEFT").innerHTML = param;
xmlhttp.open("GET","/WebFront/Asynclet?" + param,true);
xmlhttp.send(null);
}
tiene javascript flujos seguros? Y si no, ¿cómo puedo sincronizar o aislar llamadas a este método?
Creo que la mayoría de los navegadores intentan evitar las condiciones de carrera. No vi ningún bloque de sincronización o similar en JavaScript, ya que está diseñado para ser fácil (y de un solo subproceso). –