我想在HTML页面上创建一个值,该值每5秒更新一次,以免使服务器不堪重负。事实证明,函数内部的setTimeout()不能正确延迟,而是立即被调用。有人可以帮我找到线索吗?我真的不想给我的服务器太多工作,因为我必须实现更多的AJAX。
这是代码:
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); } } }
JavaScript中的函数 对象 是一回事。函数 调用 是另一回事。您正在使用后者,方法是在函数名称*后加上括号,但是您需要前者,但不要加上括号。这允许setTimeout以后使用传入的对象来调用函数本身。假设您确实需要5秒(而不是原始代码使用的50秒):
setTimeout
setTimeout(GetUsersNumber, 5000);