Javascript setInterval 函数来清除自身
Javascript setInterval function to clear itself?
myInterval = setInterval(function(){
MyFunction();
},50);
function MyFunction()
{
//Can I call clearInterval(myInterval); in here?
}
间隔没有停止(未清除(,如果我上面编码的内容很好,那么它将帮助我在其他地方寻找导致问题的原因。谢谢。
编辑:让我们假设它在调用clearInterval之前完成几个间隔,这消除了对setTimeout的需求。
只要您有保存的interval
变量的范围,您就可以从任何地方取消它。
在"子"范围内:
var myInterval = setInterval(function(){
clearInterval(myInterval);
},50);
在"同级"范围内:
var myInterval = setInterval(function(){
foo();
},50);
var foo = function () {
clearInterval(myInterval);
};
如果间隔超出范围,您甚至可以通过间隔:
var someScope = function () {
var myInterval = setInterval(function(){
foo(myInterval);
},50);
};
var foo = function (myInterval) {
clearInterval(myInterval);
};
clearInterval(myInterval);
将在需要时取消间隔。如果您想在第一次通话后立即取消,您应该改为setTimeout
。当然,您可以在间隔函数本身中调用它。
var myInterval = setInterval(function() {
if (/* condition here */){
clearInterval(myInterval);
}
}, 50);
请参阅此处的示例。
var interval = setInterval(function() {
if (condition) clearInterval(interval); // here interval is undefined, but when we call this function it will be defined in this context
}, 50);
或
var callback = function() { if (condition) clearInterval(interval); }; // here interval is undefined, but when we call this function it will be defined in this context
var interval = setInterval(callback, 50);
从你的代码来看,你似乎想做的是运行一个函数并一次又一次地运行它,直到完成一些工作......
这其实是setTimeout()
的任务,方法类似:
var myFunction = function(){
if( stopCondition ) doSomeStuff(); //(do some stuff and don't run it again)
else setTimeout( myFunction, 50 );
}
myFunction(); //immediate first run
就这么简单:)
当然,如果你真的出于某种原因想使用 setInterval,@jbabey的答案似乎是最好的:)
你可以通过使用 window.setTimeout 的技巧来做到这一点
var Interval = function () {
if (condition) {
//do Stuff
}
else {
window.setTimeout(Interval, 20);
};
};
window.setTimeout(Interval, 20);
相关文章:
- Javascript setInterval 函数来清除自身
- 如何清除现有的setInterval
- 如何在 JQuery 中清除重复设置的 setInterval 函数
- 多次调用 javascript 会导致 setInterval 永远不会被清除
- javascript setInterval 清除问题
- 如何防止在清除间隔之前执行 setInterval() 之后的指令
- 清除屏幕插件中的 setInterval 以在视口中更改类
- 使用 setInterval() 而不清除以前的火灾
- 鼠标悬停时清除setinterval,鼠标悬停时恢复
- 清除setInterval并防止出现故障
- setInterval()未被清除
- 如何在不知道其ID的情况下清除所有setInterval()和setTimeOut()
- 保存setInterval以便稍后清除
- 清除interval后Setinterval不起作用
- 如何在使用setInterval()后清除间隔
- 无法清除setInterval
- setInterval不能通过鼠标up清除
- 如何清除setInterval函数
- 如何清除setInterval的所有实例
- 清除setInterval函数后如何恢复?请只使用javascript