繁体   English   中英

我莫名其妙地无法停止我的setTimeout()循环

[英]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被调用一次,变量itemTimerstopTimeout得到重新分配一个新的超时参考。 因此,将无法清除先前设置的超时。 如果是这种情况,则应该很容易解决。 只需将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM