clearInterval 什么都不做
clearInterval does nothing
很简单,setIntervall 正常启动't' go 为假,clearinterval 什么也不做,go 为真。所以如果 app.post 第三次执行,我有 2 个间隔,处理 t。我不明白为什么。
go= true;
app.post('/s', function s(req, res){
if (go){
setInterval(t, 3000);
go = false;
}else{
clearInterval(t);
go = true;
}
});
您必须像这样将变量设置为 setInterval:
go= true;
var interval = 0;
app.post('/s', function s(req, res){
if (go){
interval = setInterval(t, 3000);
go = false;
}else{
clearInterval(interval);
go = true;
}
});
setInterval
returns 需要传递给 clearInterval
的标识符 - 您不会通过传递函数引用来清除它:
go= true;
var interval=0;
app.post('/s', function s(req, res){
if (go){
interval = setInterval(t, 3000);
go = false;
}else{
clearInterval(interval);
go = true;
}
});
首先;您必须按照其他答案的建议将 setInterval 分配给一个变量,如果它仍然不起作用,请继续阅读下文...
好吧,我遇到同样的问题太多次了,通常我只是顺其自然,
但大多数时候我意识到在清除间隔后间隔继续运行,这可能会影响设备的性能(就像有一个无限循环)。
所以我做了一些研究,发现了问题所在,并编写了一个简单的代码来解决它。
现在,在大多数情况下,当您开始一个间隔(很可能由事件触发)时,会声明该间隔的多个实例(无论出于何种原因)...
所以后面清除区间时,只清除*顶层区间,下一级区间才进入。
(顶级可能不是正确的词)
所以为了真正清除间隔,我使用了以下方法:
设置间隔:
if(!timer)
timer =setInterval(myFunction, 1000);
正在清除区间:
clearInterval(timer);
timer=null;
while (timer!== null){
timer=null;
}
您可能决定清除 while 循环内的间隔,但我发现这对我有用,而且比那更有效。
Make sure you check the scope of the interval variable (i.e timer in the case above)
很简单,setIntervall 正常启动't' go 为假,clearinterval 什么也不做,go 为真。所以如果 app.post 第三次执行,我有 2 个间隔,处理 t。我不明白为什么。
go= true;
app.post('/s', function s(req, res){
if (go){
setInterval(t, 3000);
go = false;
}else{
clearInterval(t);
go = true;
}
});
您必须像这样将变量设置为 setInterval:
go= true;
var interval = 0;
app.post('/s', function s(req, res){
if (go){
interval = setInterval(t, 3000);
go = false;
}else{
clearInterval(interval);
go = true;
}
});
setInterval
returns 需要传递给 clearInterval
的标识符 - 您不会通过传递函数引用来清除它:
go= true;
var interval=0;
app.post('/s', function s(req, res){
if (go){
interval = setInterval(t, 3000);
go = false;
}else{
clearInterval(interval);
go = true;
}
});
首先;您必须按照其他答案的建议将 setInterval 分配给一个变量,如果它仍然不起作用,请继续阅读下文...
好吧,我遇到同样的问题太多次了,通常我只是顺其自然, 但大多数时候我意识到在清除间隔后间隔继续运行,这可能会影响设备的性能(就像有一个无限循环)。
所以我做了一些研究,发现了问题所在,并编写了一个简单的代码来解决它。
现在,在大多数情况下,当您开始一个间隔(很可能由事件触发)时,会声明该间隔的多个实例(无论出于何种原因)...
所以后面清除区间时,只清除*顶层区间,下一级区间才进入。 (顶级可能不是正确的词)
所以为了真正清除间隔,我使用了以下方法:
设置间隔:
if(!timer)
timer =setInterval(myFunction, 1000);
正在清除区间:
clearInterval(timer);
timer=null;
while (timer!== null){
timer=null;
}
您可能决定清除 while 循环内的间隔,但我发现这对我有用,而且比那更有效。
Make sure you check the scope of the interval variable (i.e timer in the case above)