js实现定时器暂停恢复
在项目中,常常需要使用定时器做一些轮询的操作,javascript 里面提供了两个全局函数 setTimeout 和setInterval 来实现,但是在使用中,定时任务往往是一些耗时操作,我们期望每一次轮询等操作做完了在重新开始定时器,因此需要对定时器进行暂停和恢复,所以对定时器进行了一个简单的封。
代码如下:
class CTimer {
/**
*
* @param {function} callback
* @param {number} interval ms
*/
constructor(callback, interval) {
this.state = 0;//0-stop 1-runing 2-pause
this.callback = callback;
this.interval = interval;
this.start();
}
start() {
if (this.state !== 1) {
this.timer = setInterval(this.callback, this.interval);
this.state = 1;
}
}
pause() {
if (this.state === 1) {
clearInterval(this.timer);
this.state = 2;
}
}
resume() {
if (this.state === 2) {
this.start();
}
}
stop() {
if (this.state !== 0) {
clearInterval(this.timer);
this.state = 0;
}
}
isStop() {
return (this.state === 0);
}
isRuning() {
return (this.state === 1);
}
isPaused() {
return (this.state === 2);
}
}
module.exports = CTimer;
上面的类的使用方法如下:
const CTimer = require('./ctimer');
let testTimer = new CTimer(async ()=>{
testTimer.pause();
await doSomething();
testTimer.resume();
}, interval_ms);
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 KafuuChino
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果