[英]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.