【问题标题】:Why is setTimeout executing immediately? [duplicate]为什么 setTimeout 立即执行? [复制]
【发布时间】:2014-03-03 22:15:54
【问题描述】:

我有一个简单的 JavaScript setTimeout 函数,但它拒绝工作

setTimeout(timeup(tc,chosen),10000)

...这是函数:

timeup = function (clt,clo)
{   
    alert("time up")
}

...超时警报立即出现,而不是在 10 秒后出现,有人可以告诉我为什么会这样吗?

【问题讨论】:

    标签: javascript function settimeout


    【解决方案1】:

    因为您实际上是在 setTimeout 函数中调用 timeup(tc,chosen) 函数。

    试试:

    setTimeout(function(){
      timeup(tc,chosen);
    }, 10000);  
    

    【讨论】:

    【解决方案2】:

    在您的示例中,您调用函数并将其结果传递给setTimeout 函数。

    这里使用存储在变量中的函数的有效方法是:

    setTimeout(timeup, 10000);
    

    但它不允许传递参数。要传递参数,您可以尝试:

    setTimeout(function(){
      timeup(tc,chosen);
    }, 10000);
    

    【讨论】:

    • 详细说明 setTimeout 需要一个“timeup”函数。在您的代码中,您正在调用它,它返回的内容(无)将由 setTimeout 作为函数运行。如果您想将参数传递给函数以响应事件或 setTimeout,那么您需要声明一个额外的函数来执行此操作。就像在这个答案中
    • 谢谢!现在可以使用了!
    【解决方案3】:

    关键是您在超时之前调用该函数,当您添加 (tc, selected) 这会触发超时函数。

    删除()

    setTimeout(timeup,10000)

    这将在 10000 毫秒后触发你的功能

    【讨论】:

      【解决方案4】:

      您需要将代码包装在匿名函数中:

      setTimeout(function() {timeup(tc,chosen)},10000);
      

      这会将您的代码置于计时器的上下文中,而不是您现在看到的内联执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        • 2011-10-31
        相关资源
        最近更新 更多