Javascript setInterval函数清除自己?

54 javascript setinterval clearinterval

myInterval = setInterval(function(){
     MyFunction();
},50);

function MyFunction()
{
    //Can I call clearInterval(myInterval); in here?
}
Run Code Online (Sandbox Code Playgroud)

间隔没有停止(没有被清除),如果我上面编码的是好的那么它将帮助我在别处查找造成问题的原因.谢谢.

编辑:假设它在调用clearInterval之前完成了几个间隔,这消除了对setTimeout的需要.

jba*_*bey 97

只要您拥有已保存interval变量的范围,就可以从任何地方取消它.

在"子"范围内:

var myInterval = setInterval(function(){
     clearInterval(myInterval);
},50);
Run Code Online (Sandbox Code Playgroud)

在"兄弟"范围内:

var myInterval = setInterval(function(){
     foo();
},50);

var foo = function () {
    clearInterval(myInterval);
};
Run Code Online (Sandbox Code Playgroud)

如果它超出范围,您甚至可以传递间隔:

var someScope = function () {
    var myInterval = setInterval(function(){
        foo(myInterval);
    },50);
};

var foo = function (myInterval) {
    clearInterval(myInterval);
};
Run Code Online (Sandbox Code Playgroud)

  • 当尚未评估 `setInterval` 时,如何将 `myInterval` 传递给 `foo`? (2认同)

Chr*_*oph 6

clearInterval(myInterval);
Run Code Online (Sandbox Code Playgroud)

会在你需要的时候取消Interval.如果你想在第一次通话后立即取消,你应该setTimeout改为.确定你可以在Interval函数中调用它.

var myInterval = setInterval(function() {
  if (/* condition here */){
        clearInterval(myInterval);
   } 
}, 50);
Run Code Online (Sandbox Code Playgroud)

在这里看一个例子.