我想调用一个函数,该函数可以使用间隔内已经正常工作的函数(运行函数)中的间隔来持续检查一定的时间。 我所做的就是:
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.
答案 0 :(得分:0)
你正在错误的地方清理间隔。
在您的代码中,您试图在 之前将其清除(因此它基本上是无操作)。
您希望在 之后清除并执行
function log ()
{
console.log ("log() called.");
clearInterval(interval);
}
您还应该注意到,由于您的onrunning
也被作为“间隔”回调触发,因此您将在每个回调执行帧上创建新的日志间隔。如果您也要清除此间隔,只需复制与上面相同的逻辑,但在onrunning
回调内。
我假设你想在一段时间之后只发射一次“log”回调(也可能是“onrunning”回调)。在这种情况下,您应该使用setTimeout
代替setInterval
。
Jaromanda X in this comment已经指出了这一点。