node / js在再次运行之前停止该功能

时间:2017-03-22 22:46:42

标签: javascript node.js setinterval

我有一个在每个时间间隔运行的函数,我需要在再次运行之前停止该函数。

类似于下面的代码。

var interval = 1000*60*3.14159;

setInterval( function(){
  setTimeout( myfunction(), interval )
}, interval );

2 个答案:

答案 0 :(得分:2)

setTimeout返回timeoutID值,稍后您可以使用该值停止计时器

var timeoutId = setTimeout( myfunction(), interval);
clearTimeout(timeoutId);

答案 1 :(得分:1)

您的代码,特别是与要求一起,没有意义。首先,您需要将对函数的引用传递给setTimeout,而不是直接执行它,

setTimeout(myfunction, 1000);

否则,setTimeout根本没有任何效果,只是在没有超时的情况下执行该函数。

现在,如果我们修复此错误,我们所拥有的是setIntervalsetTimeout相同的时间间隔。如果你想停止每次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"); 
}