Являются ли вызовы методов Javascript потокобезопасными или синхронизированными?

Я все еще новичок в Javascript. Я разрабатываю простую страницу, на которой я нажимаю кнопку, извлекаю значение из сервлета и отображаю его. Работает хорошо, если только я не нажимаю как сумасшедший на кнопку. Иногда отображаемый результат является нулевым.

Мне интересно, вызвано ли это одновременным вызовом одной и той же следующей функции:

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 потокобезопасным? А если нет, как мне синхронизировать или изолировать вызовы этого метода?

16
задан Jérôme Verstrynge 23 October 2011 в 19:30
поделиться