gpt4 book ai didi

javascript - 对 Javascript 方法的调用是线程安全的还是同步的?

转载 作者:可可西里 更新时间:2023-11-01 01:20:59 25 4
gpt4 key购买 nike

我对 Javascript 还是个新手。我正在开发一个简单的页面,我在其中单击一个按钮以获取 servlet 上的值并显示它。它运作良好,除非我疯狂地点击按钮。有时,显示的结果为空。

我想知道这是否是由同时调用以下相同函数引起的:

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 是线程安全的吗?如果没有,我如何同步或隔离对此方法的调用?

最佳答案

除了 HTML5 web workers(它们受到非常严格的控制,显然不是你所问的),浏览器中的 Javascript 是单线程的,所以常规的 Javascript 编程没有线程安全问题。一个执行线程将在下一个线程开始之前完成。没有两段 Javascript 会同时运行。

ajax 响应之类的事情通过事件队列,并且仅在任何其他执行线程完成时执行。

参见 Do I need to be concerned with race conditions with asynchronous Javascript?了解更多信息。

有关 ajax 响应回调的具体讨论,请参阅 How does JavaScript handle AJAX responses in the background? .

关于javascript - 对 Javascript 方法的调用是线程安全的还是同步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com