# Timer **Repository Path**: konger123/Timer ## Basic Information - **Project Name**: Timer - **Description**: 自己写的一个javascript的Timer插件。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Timer #### 介绍 自己写的一个javascript的Timer插件,用在页面里跑定时任务或周期性任务。 > 一个可参考的jquery.timer插件:https://github.com/viticm/jquery.timer #### 软件架构 使用JavaScript自带的setInterval或setTimeout实现。 #### 功能说明 1. 支持页面内的多个Timer分别独立控制(页面里Timer不要用太多,否则会比较占资源); 2. 支持自由的对Timer进行【启动】、【停止】、【重置】、【暂停】、【继续】、【销毁】等控制方法; 3. 可以设置timer的运行次数(loop>0),或者设置成无限循环模式(loop=-1); 4. 支持interval和timeout两种模式(一般建议使用interval模式,定时更准确且不会太占用资源); 5. 可在Timer运行过程中随时查看Timer的运行信息。 #### 使用说明 1. 在页面里引用Timer.js文件 ``` ``` 2. 在js里声明调用 ``` var timer = null; window.onload = function() { /** * 初始化Timer * @param options 参数 * type:'interval', //Timer类型:timeout | interval。默认interval * delay:1000, //时间间隔,单位:毫秒。默认1000毫秒(1秒) * loop:-1, //循环次数。默认:-1 表示无限循环 * name:'timer_'+parseInt(Math.random()*1000000000000), //Timer的名字,默认值'timer_10位随机数' * debug:false, //调试输出开关,设为true时将会在控制台里打印输出日志信息。默认false * startOnInit:false, //是否在初始化后就启动。默认false * @param runFunc 每次调用执行的方法(function或者string) * @param completeFunc 循环执行完毕后的回调函数(function或者string) * @returns {object} Timer对象 */ timer = new Timer({ type: 'interval',//Timer类型:timeout | interval。默认interval delay: 1000,//时间间隔,单位:毫秒。默认1000毫秒(1秒) loop: 10,//循环次数。默认:-1 表示无限循环 name: 'myTimer',//Timer的名字 debug: false,//调试输出开关,设为true时将会在控制台里打印输出日志信息。默认false startOnInit: false,//是否在初始化后就启动 }, //"run(timer)", "run(++count)", runOver ); //启动timer(也可以通过设置参数startOnInit=true自行启动) start(); }; //运行一次的回调方法(*注意:方法参数只能传入全局变量!) function run(c) {//传入count计数 console.info("\trun() c="+c); var ul = document.getElementById("con_ul"); var li = document.createElement("li"); li.innerText = "run "+c; ul.append(li); console.info("li is added!"); if(c % 5 == 0) { console.info("#### already runned for "+c+" times!"); } } //function run(tm) {//传入timer对象 // var ul = document.getElementById("con_ul"); // var li = document.createElement("li"); // li.innerText = "run "+c; // ul.append(li); // console.info("li is added!"); // // if((tm.runCount+1) %5 == 0) { // console.info("#### already runned for "+(tm.runCount+1)+" times!"); // } //} //运行完毕的回调方法 function runOver() { console.info("runOver."); } //开始运行timer function start() { timer.start(); } //停止运行timer function stop() { timer.stop(); } //暂停timer function pause() { timer.pause(); } //继续运行timer function resume() { timer.resume(); } //重置timer function reset() { timer.reset(); } //销毁timer function destroy() { timer.destroy(); timer = null; } //获取runTime function getInfo() { console.info("Timer ["+timer.getName()+"] running: "+timer.isRunning()+", runTime: "+timer.getRunTime()+", runCount="+timer.getRunCount()); } //更新参数 function updateOptions() { //timer.stop(); //timer.reset(); timer.runCount = 0; timer.updateOptions({ type: 'timeout', delay: 500, loop: 20, }); } ```