在由间隔JS调用的函数中按间隔调用函数

时间:2016-09-07 09:38:39

标签: javascript switch-statement settimeout setinterval clearinterval

我想调用一个函数,该函数可以使用间隔内已经正常工作的函数(运行函数)中的间隔来持续检查一定的时间。 我所做的就是:

 var interval;
 var time = prompt("Insert amount of time in seconds");
 function log ()
 {
 console.log ("log() called.");
 }
 function onrunning ()
 {
  interval = setInterval(log,time*1000);
}
gameloop = setInterval(onrunning,5);//This interval must not cleared

第一段时间工作正常,但在此之后,它会继续更快更快地调用log()函数,直到浏览器崩溃。 我试着这样做

var interval;
var time = prompt("Insert amount of time in seconds");
function log ()
{
console.log ("log() called.");
}
function onrunning ()
 {
  interval = setInterval(log,time*1000);
 }
 gameloop = setInterval(onrunning,5);
 clearInterval(interval); //tried this but no differece.

1 个答案:

答案 0 :(得分:0)

你正在错误的地方清理间隔。

在您的代码中,您试图在 之前将其清除(因此它基本上是无操作)。

您希望在 之后清除执行

function log ()
{
    console.log ("log() called.");
    clearInterval(interval);
}

您还应该注意到,由于您的onrunning也被作为“间隔”回调触发,因此您将在每个回调执行帧上创建新的日志间隔。如果您也要清除此间隔,只需复制与上面相同的逻辑,但在onrunning回调内。

我假设你想在一段时间之后只发射一次“log”回调(也可能是“onrunning”回调)。在这种情况下,您应该使用setTimeout代替setInterval

Jaromanda X in this comment已经指出了这一点。