使用动态参数在 setInterval 函数中禁用计时器
Posted
技术标签:
【中文标题】使用动态参数在 setInterval 函数中禁用计时器【英文标题】:Disable timer within setInterval function with dynamic parameters 【发布时间】:2016-11-04 03:26:19 【问题描述】:我想将动态参数传递给 setInterval 函数(参见问题 here),特别是 @tvanfosson 的评论。
但是现在,如果满足某个条件,我也想禁用该计时器。我试图将计时器变量定义为全局变量,但我仍然在这一行将计时器设为undefined
:console.log('else. timer=' + timer);
:
否则。计时器=未定义
<script language="javascript" type="text/javascript">
var timer;
var params=;
params.color='light';
$(document).ready(function ()
timer=createInterval(showSmallWidget, params.color, 500);
);
function createInterval(f, dynamicParameter, interval)
setInterval(function ()
f(dynamicParameter);
, interval);
function showSmallWidget(color)
if ($('#widget').html() == '')
//do stuff
else
console.log('else. timer=' + timer);
if (timer) console.log('CLEAR TIMER'); timer.clearInterval(); timer = null;
</script>
我尝试创建一个 JSFiddle,但无法正常工作:https://jsfiddle.net/puhw3z2k/
【问题讨论】:
【参考方案1】:有几个问题:
1) 您必须从 createInterval()
函数中返回 timerID:
function createInterval(f, dynamicParameter, interval)
return setInterval(function ()
f(dynamicParameter);
, interval);
2) clearInterval()
像 clearInterval(timer)
那样工作,而不是 timer.clearInterval()
。
【讨论】:
以上是关于使用动态参数在 setInterval 函数中禁用计时器的主要内容,如果未能解决你的问题,请参考以下文章
在JavaScript的SetInterval()函数中传递参数
带参数的 Javascript setinterval 函数
如何使用定时器settimeout,setInterval执行能传递参数的函数