Я хочу сделать значение на HTML-странице, которая будет обновляться каждые 5 секунд, чтобы не перегружать сервер. Оказывается, что setTimeout() внутри моей функции не задерживается должным образом, но вместо этого вызывается немедленно. Может кто-нибудь помочь мне найти ключ? Я действительно не хочу, чтобы мой сервер работал слишком много, потому что мне нужно реализовать намного больше AJAX.setTimeout вызывает функцию немедленно, а не после задержки
Вот код:
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);
}
}
}
Возможный дубликат [Вызов setTimeout в цикле не работает должным образом] (http://stackoverflow.com/questions/19714453/calling-settimeout-in-a-loop-not-working-as-expected) –
Также http://stackoverflow.com/questions/15682524/settimeout-in-nodejs-loop и несколько других вопросов. –
@torazaburo: Ни один из них не является точно каноническим. Возможно, этого и не может быть, но я думаю, что теперь это довольно приличная форма, которую нужно обмануть, хотя любые дополнительные настройки, вероятно, все же будут полезны. –