当前位置: 首页 > 知识库问答 >
问题:

setTimeout立即调用函数,而不是在延迟之后调用函数

谷越
2023-03-14

我想在一个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);
        }
    }
}

共有1个答案

郭凡
2023-03-14

JavaScript中的函数对象是一回事。函数调用是另一回事。您使用的是后者,在函数名*后加上括号,但您需要前者,没有括号。这允许settimeout稍后通过使用传入的对象调用函数本身。假设您真的需要5秒(而不是原始代码使用的50秒):

setTimeout(GetUsersNumber, 5000);

*实际上,任何保存函数对象的旧变量都可以这样调用,但为了方便起见,定义函数也会为它定义一个变量名。

 类似资料:
  • 问题内容: 我想在HTML页面上创建一个值,该值每5秒更新一次,以免使服务器不堪重负。事实证明,函数内部的setTimeout()不能正确延迟,而是立即被调用。有人可以帮我找到线索吗?我真的不想给我的服务器太多工作,因为我必须实现更多的AJAX。 这是代码: 问题答案: JavaScript中的函数 对象 是一回事。函数 调用 是另一回事。您正在使用后者,方法是在函数名称*后加上括号,但是您需要前

  • 问题内容: 如果返回错误,是否仍在调用? 问题答案: 不,延迟功能不会运行。 这是log.Fatal的描述: 致命等同于Print(),然后调用os.Exit(1)。 呼叫,其描述在这里: 退出使当前程序以给定的状态码退出。按照惯例,代码零表示成功,代码零表示错误。程序立即终止;延迟功能未运行。 示范 如果您确实需要在程序完成之前正确关闭资源或执行某些任务,请不要使用。

  • 如标题所示,在中,是否有方法在延迟(例如1秒)后调用函数?

  • 本文向大家介绍一定延迟后如何调用jQuery函数?,包括了一定延迟后如何调用jQuery函数?的使用技巧和注意事项,需要的朋友参考一下 要在一定延迟后调用jQuery函数,请使用方法。在这里,几秒钟后调用jQuery函数。 您可以尝试运行以下代码,以了解如何使用jQuery中的方法在延迟后调用jQuery函数- 示例

  • 我正在使用Mika Tuupola的jQuery延迟加载。 是否可以在每次延迟加载图像后调用函数。 我打算做的是跟踪图像的浏览次数。因此,如果图像是延迟加载的,这意味着用户已经看到了图像,我将通过在后台执行HTTP GET,将数据库中的计数器增加1。

  • 问题内容: 有一个JSLint选项(实际上是The Good Parts之一),它“需要避免立即调用”,这意味着构造 而是需要写成 我的问题是-谁能解释为什么第二种形式可能会更好?它更具弹性吗?容易出错?与第一种形式相比,它有什么优势? 自问了这个问题之后,我开始理解在功能值和功能值之间进行清晰的视觉区分的重要性。考虑一下立即调用的结果在赋值表达式的右侧的情况: 尽管从语法上讲,最外面的括号不是必