使用动态参数在setInterval函数内禁用计时器
我想将动态参数传递给setInterval函数(请参阅此处的问题),特别是@tvanfosson的注释。 但现在,如果满足某个条件,我也想禁用该计时器。 我试图将timer变量定义为全局变量,但我仍然将此计时器undefined
为undefined
:
console.log('else. timer=' + timer);
:
其他。 计时器=未定义
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; } } }
我试图创建一个JSFiddle,但我不能让它正常工作: https ://jsfiddle.net/puhw3z2k/
有几个问题:
1)您必须从createInterval()
函数返回timerID:
function createInterval(f, dynamicParameter, interval) { return setInterval(function () { f(dynamicParameter); }, interval); }
2) clearInterval()
工作方式类似于clearInterval(timer)
,而不是timer.clearInterval()
。