依赖模型 | events |
复杂程度 | 中低 |
使用频率 | 中 |
成员类型 | 静态模块 |
Std.timer模块是一个定时器模块,相比setTimeout,setInterval这2个方法Std.timer模块更加高级,可以更容易的被控制与使用.
例如: 暂停,停止 ,延迟,限制执行次数等.
该模块可以不使用new关键字来创建实例对象,直接执行Std.timer本身也会返回一个新的实例对象,但是与使用new关键字来创建实例对象之间有一个区别, 直接执行Std.timer本身后,定时器会立即开始,而使用new Std.timer的方式则不会.
方法名称 | 成员类型 | 描述 |
::test | static | 代码执行时间测试 |
elapsedTime | protected | timer已经执行的时间 |
elapsedCount | protected | timer已经执行的次数 |
startTimer | protected | 开启计时器 |
stopTimer | protected | 停止计时器 |
count | public | 定时器需要执行的次数 |
timeout | public | 设置定时器超时时间 |
delay | public | 定时器延迟执行时间 |
state | public | 定时器状态 |
set | public | 设置定时器参数 |
interval | public | 定时器间隔 |
start | public | 开始定时器 |
pause | public | 暂停定时器 |
stop | public | 停止定时器 |
reset | public | 重置定时器 |
new Std.timer(Object option);
new Std.timer(Function progress,Number interval);
new Std.timer(Function progress,Object Option);
名称 | 类型 | 描述 |
option | Object | Std.timer模块的参数选项 |
progress | Function | 定时器触发的函数 |
interval | Number | 定时器要执行的间隔时间,默认为数字毫秒,当然可以是一个带有单位的时间字符串,例如 1s(可参考Std.convert.timeUnit) |
名称 | 类型 | 默认值 | 描述 |
delay | Number | 0 | 定时器开始之前需要延迟的时间,可以为数字毫秒,也可以是一个带有时间单位的字符串,例如 1s(可参考Std.convert.timeUnit) |
count | Number | infinite | 定时器需要执行的次数,默认为infinite,表示无限执行 |
timeout | Number | 0 | 定时器执行的超时时间,当过了这个时间,定时器将会停止,并且触发timeout事件, 时间可以为数字毫秒,也可以是一个带有时间单位的字符串,例如 1s(可参考Std.convert.timeUnit),如果为0,则表示不设置超时. |
interval | Number | 0 | 定时器触发的间隔时间,时间可以为数字毫秒,也可以是一个带有时间单位的字符串,例如 1s(可参考Std.convert.timeUnit) |
progress | Function | null | 定时器间隔触发的函数 |
名称 | 回调参数 | 描述 |
timeout | 无 | 超时之后触发的事件 |
progress | 已经执行的时间,当定时器暂停的时候,该时间也会暂停计数 | 根据interval值触发的事件 |
complete | 已经执行的时间,当定时器暂停的时候,该时间也会暂停计数 | 当定时器执行完毕之后触发的事件 |
stateChange | 状态字符串 | 当定时器状态被改变的时候触发的事件 |
start | 无 | 当定时器开始执行的时候触发的事件 |
pause | 无 | 当定时器暂停的时候触发的事件 |
stop | 无 | 当定时器停止的时候触发的事件 |
//创建定时器,无限执行,间隔时间为200毫秒
var timer = new Std.timer({
interval:200,
progress:function(){
console.log(this.elapsedCount);
}
});
//手动开始
timer.start();
//每2秒执行一次
Std.timer(function(){
console.log(this.elapsedCount);
},"2s");
//延迟3秒之后开始,间隔200毫秒触发,当执行次数达到5次的时候暂停
var timer = Std.timer({
interval:200,
delay:3000,
progress:function(){
if(this.elapsedCount == 5){
this.pause();
}
}
});