Jér*_*nge 16 javascript null synchronized thread-safety
我还是Javascript的新手.我正在开发一个简单的页面,我单击一个按钮来获取servlet上的值并显示它.它运作良好,除非我在按钮上点击疯狂.有时,显示的结果为null.
我想知道这是否是由同时调用相同的以下函数引起的:
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);
}
Run Code Online (Sandbox Code Playgroud)
Javascript是线程安全的吗?如果没有,我如何同步或隔离对此方法的调用?
jfr*_*d00 38
除了HTML5网络工作者(受到严格控制)之外,Javascript是单线程的,因此线程安全没有问题.一个执行线程将在下一个启动之前完成.
像ajax响应这样的事情通过一个事件队列,只有在任何其他执行线程完成时才会执行.
请参阅我是否需要关注异步Javascript的竞争条件?了解更多信息.
有关ajax响应回调的具体讨论,请参阅JavaScript如何在后台处理AJAX响应?.