工作中写的一个小小的倒计时方法,将进入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;
});
浙公网安备 33010602011771号