我有一个在每个时间间隔运行的函数,我需要在再次运行之前停止该函数。
类似于下面的代码。
var interval = 1000*60*3.14159;
setInterval( function(){
setTimeout( myfunction(), interval )
}, interval );
答案 0 :(得分:2)
setTimeout
返回timeoutID
值,稍后您可以使用该值停止计时器
var timeoutId = setTimeout( myfunction(), interval);
clearTimeout(timeoutId);
答案 1 :(得分:1)
您的代码,特别是与要求一起,没有意义。首先,您需要将对函数的引用传递给setTimeout
,而不是直接执行它,
setTimeout(myfunction, 1000);
否则,setTimeout根本没有任何效果,只是在没有超时的情况下执行该函数。
现在,如果我们修复此错误,我们所拥有的是setInterval
和setTimeout
相同的时间间隔。如果你想停止每次setTimeout
滴答时我们传递给setInterval
的函数的执行,你的setTimeout
将被中断并且永远不会被执行,因为你指定了相同的间隔。下一个勾号将在它完成任务之前停止该功能。
请参阅此示例 - 请注意,没有任何反应:
var interval = 1000;
setInterval( function(){
var i = setTimeout( myfunction, interval )
clearTimeout(i);
}, interval );
function myfunction() {
console.log("you'll never see me");
}