我想调用一个函数,这个函数可以使用一个间隔不断地检查一段时间,这个函数已经在一个间隔内工作(正在运行函数)。我所做的就是:
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.发布于 2016-09-07 18:17:27
您在错误的位置清除间隔。
在您的代码中,您试图在创建它之前将其清除(所以这基本上是一个无操作)。
您想要在创建并执行和后将其清除:
function log ()
{
console.log ("log() called.");
clearInterval(interval);
}您还应该注意到,由于您的onrunning也是作为"interval“回调触发的,因此您将在每个回调执行帧上创建新的日志间隔。如果您也想清除此间隔,只需复制上述相同的逻辑,但在onrunning回调中。
我假设您只想在一段时间后触发一次"log“回调(可能也是”onrunning“回调)。在这种情况下,您应该使用setTimeout而不是setInterval。
Jaromanda X in this comment已经指出了这一点。
https://stackoverflow.com/questions/39366380
复制相似问题