Tôi vẫn còn mới với Javascript. Tôi đang phát triển một trang đơn giản, nơi tôi nhấp vào một nút tìm nạp một giá trị trên một servlet và hiển thị nó. Nó hoạt động tốt, trừ khi tôi nhấp vào như điên trên nút. Đôi khi, kết quả được hiển thị là null.Các cuộc gọi đến các phương thức Javascript có an toàn hoặc đồng bộ hóa không?
tôi tự hỏi liệu điều này là do cuộc gọi đồng thời với chức năng tương tự sau đây:
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);
}
Javascript có thread-an toàn không? Và nếu không, làm thế nào tôi có thể đồng bộ hóa hoặc cô lập các cuộc gọi đến phương pháp này?
Tôi nghĩ rằng hầu hết các trình duyệt đều cố gắng ngăn chặn điều kiện chủng tộc. Tôi không thấy bất kỳ khối đồng bộ hóa nào hoặc như vậy trong JavaScript vì nó được thiết kế để dễ dàng (và đơn luồng). –