我一直在使用setTimeout和setInterval,我无法让代码按照我希望的方式执行。我的目标是创建一个setInterval,每隔三秒调用一次,并在十秒后清除它。但是,当我在firebug中运行代码时,我唯一得到的是一个数字,我假设它是setInterval的id,因为每次执行代码时,数字都会增加。
var intID = setInterval(function() {
console.log("I've been called");},3000);
setTimeout(clearInterval(intID), 10000);
答案 0 :(得分:16)
本声明:
setTimeout(clearInterval(intID), 10000);
表示,"调用函数' clearInterval'传递变量' intID'的值,然后将其返回值和数字10000
传递给函数' setTimeout'。"
换句话说,您调用函数" clearInterval"然后将返回的值传递给setTimeout()
。
相反,传递setTimeout()
函数:
setTimeout(function() { clearInterval(intID); }, 10000);
答案 1 :(得分:3)
你不设置这样的间隔:
setInterval(console.log("I've been called"), 3000);
如果你这样做,console.log
会被立即调用 - 甚至 setInterval
之前的,因为它是setInterval
的参数,并且参数有在调用使用它们的函数之前进行评估。
所以为什么要设置这样的超时?
setTimeout(clearInterval(intID), 10000);
这会导致与上述完全相同的问题。
在设置间隔时,只需执行相同的操作:
setTimeout(function() { clearInterval(intID); }, 10000);