// Timer with 1000ms (1 second) base interval resolution.
const timer = new TaskTimer(1000);
// Add task(s) based on tick intervals.
timer.add({
id: 'job1', // unique id of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (omit for unlimited times)
callback(task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
// stop the timer anytime you like
if (someCondition()) timer.stop();
// or simply remove this task if you have others
if (someCondition()) timer.remove(task.id);
}
});
// Start the timer
timer.start();
<button onClick="inter = setInterval(myCounter, 1000)">start to count</button>
<p id="demo">here is the counter</p>
<button onClick="clearInterval(inter)">stop </button>
var i = 0;
this.setInterval(function() {
if(!$('#counter').hasClass('pauseInterval')) { //only run if it hasn't got this class 'pauseInterval'
console.log('Counting...');
$('#counter').html(i++); //just for explaining and showing
} else {
console.log('Stopped counting');
}
}, 500);
/* In this example, I'm adding a class on mouseover and remove it again on mouseleave. You can of course do pretty much whatever you like */
$('#counter').hover(function() { //mouse enter
$(this).addClass('pauseInterval');
},function() { //mouse leave
$(this).removeClass('pauseInterval');
}
);
/* Other example */
$('#pauseInterval').click(function() {
$('#counter').toggleClass('pauseInterval');
});
<!-- you'll need jQuery for this. If you really want a vanilla version, ask -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="counter"> </p>
<button id="pauseInterval">Pause</button></p>
9条答案
按热度按时间pxiryf3j1#
setInterval()
返回一个间隔ID,您可以将其传递给clearInterval()
:参见
setInterval()
和clearInterval()
的文档。mbyulnm02#
如果将
setInterval
的返回值设置为变量,则可以使用clearInterval
来停止它。mzmfm0qo3#
你可以设置一个新的变量,每次运行时它都递增++(加一),然后我使用一个条件语句结束它:
我希望它能有所帮助,而且是正确的。
yvgpqqbh4#
已经回答了...但如果你需要一个功能强大、可重用的定时器,同时支持不同时间间隔的多个任务,你可以使用我的TaskTimer(用于Node和浏览器)。
在您的情况下,当用户点击干扰数据刷新;你也可以调用
timer.pause()
然后timer.resume()
如果他们需要重新启用.参见more here。
igetnqfo5#
在nodeJS中,你可以在setInterval函数中使用“this”特殊关键字。
你可以使用这个this关键字来clearInterval,下面是一个例子:
当在函数中打印this特殊关键字的值时,输出的是Timeout对象
Timeout {...}
pjngdqdw6#
The Trick
setInterval
返回一个数字:溶液
拿着这个号码。把它传递给函数
clearInterval
,你就安全了:验证码:
总是将返回的
setInterval
的数量存储在一个变量中,以便稍后可以停止间隔:(将此数字视为
setInterval
的ID。即使您已经调用了许多setInterval
,您仍然可以通过使用正确的ID来停止其中的任何一个。5n0oy7gb7#
flmtquvp8#
如果你在一个按钮上有你的计数器,使用这个。
u3r8eeie9#
为什么不使用更简单的方法?添加一个类!
只需添加一个类,告诉间隔不要做任何事情。例如:在盘旋。
我一直在寻找这种快速而简单的方法,所以我发布了几个版本,以尽可能多的人介绍它。