繁体   English   中英

setTimeout似乎执行得太快

[英]setTimeout appears to execute too fast

我一直在使用setTimeout和setInterval,我无法让代码按照我希望的方式执行。 我的目标是创建一个setInterval,每隔三秒调用一次,并在十秒后清除它。 但是,当我在firebug中运行代码时,我唯一得到的是一个数字,我假设它是setInterval的id,因为每次执行代码时,数字都会增加。

var intID = setInterval(function() {
    console.log("I've been called");},3000);


setTimeout(clearInterval(intID), 10000);

这个说法:

setTimeout(clearInterval(intID), 10000);

表示“调用函数'clearInterval'传递变量'intID'的值,然后将返回值和数字10000传递给函数'setTimeout'。”

换句话说,您正在调用函数“clearInterval”,然后将返回的值传递给setTimeout()

相反,传递setTimeout()函数:

setTimeout(function() { clearInterval(intID); }, 10000);

没有像这样设置间隔:

setInterval(console.log("I've been called"), 3000);

如果你这样做,则会立即调用console.log - 甚至 setInterval 之前 ,因为它是setInterval的参数,并且必须在调用使用它们的函数之前评估参数。

你为什么要像这样设置超时

setTimeout(clearInterval(intID), 10000);

这导致与上述完全相同的问题。

只需执行设置间隔时所做的相同操作:

setTimeout(function() { clearInterval(intID); }, 10000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM