工作中写的一个小小的倒计时方法,将进入interval时已经走过的时间计算在内。
define("utility",[],function(require,exports,module){ var utility = new function(){ var me = this; me.deftime = function(options){ var defaults = { // 初始 start : 5, // 目标 target : 0, // 时间间隔 单位毫秒 interval : 1000, // 到达之前callback startFn : Function, // 到达时callback targetFn : Function }, configs = $.extend({},defaults,options); var start = configs.start, target = configs.target, startFn = configs.startFn, targetFn = configs.targetFn; // 立即结束 if(start <= target) return targetFn(start); var timer, interval = configs.interval; // 未进入倒计时先执行 startFn(start); // 进入interval判断时 其实已经过了interval秒 start -= interval/1e3; timer = window.setInterval(function(){ if(start <= target){ // 完成 clearInterval(timer); targetFn(start,timer); }else{ // 进行中 传入定时器 可以在进行中判断清除 startFn(start,timer); start -= interval/1e3; } },interval); } } module.exports = utility; });