[英]I somehow can't stop my setTimeout() loop
因此,我有一个主要function
,每clearTimeout()
秒触发一次其他function
但是当我尝试使用clearTimeout()
停止它时,它将继续运行,并且完全忽略clearTimeout()
。
这是我的主要功能:
var itemTimer;
var stopTimeout;
function major (){
var itemTime = Math.floor(Math.random() * 15000) + 2000;
itemTimer = setTimeout('items()', itemTime);
stopTimeout = setTimeout('major()',itemTime);
}
这是我的停止超时功能:
function stopTimer() {
clearTimeout(itemTimer);
clearTimeout(stopTimeout);
}
感谢您的帮助
您的setTimeout()
被错误地调用; 您正在调用items()
和major()
。 相反,您需要将它们作为要调用的函数传递。
不要将方括号传递给参数,也不要将参数用引号引起来。
代替:
itemTimer = setTimeout('items()', itemTime);
stopTimeout = setTimeout('major()',itemTime);
您正在寻找:
itemTimer = setTimeout(items, itemTime);
stopTimeout = setTimeout(major, itemTime);
希望这可以帮助! :)
我认为您的超时时间越来越长。 只要major
被调用一次,变量itemTimer
和stopTimeout
得到重新分配一个新的超时参考。 因此,将无法清除先前设置的超时。 如果是这种情况,则应该很容易解决。 只需将stopTimer
作为major
第一个语句调用即可:
function major (){
stopTimer();
var itemTime = Math.floor(Math.random() * 15000) + 2000;
itemTimer = setTimeout('items()', itemTime);
stopTimeout = setTimeout('major()',itemTime);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.