setTimeout-Aufrufe funktionieren sofort anstatt nach einer Verzögerung

Ich möchte auf einer HTML-Seite einen Wert festlegen, der alle 5 Sekunden aktualisiert wird, um den Server nicht zu überlasten. Es stellt sich heraus, dass setTimeout () in meiner Funktion nicht richtig verzögert, sondern stattdessen sofort aufgerufen wird. Kann mir jemand helfen, einen Hinweis zu finden? Ich möchte meinem Server wirklich nicht zu viel Arbeit geben, weil ich viel mehr AJAX implementieren muss.

Hier ist der Code:

window.onload = function GetUsersNumber() {
    aside = document.getElementById("users");
    if (XMLHttpRequest) var x = new XMLHttpRequest();
    else var x = new ActiveXObject("Microsoft.XMLHTTP");
    x.open("GET", "users_count.php", true);
    x.send();
    x.onreadystatechange = function () {
        if (x.readyState == 4) {
            if (x.status == 200) aside.innerHTML = x.responseText;
            setTimeout(GetUsersNumber(), 50000);
        }
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage