首页 教程 API文档

定时器模块

2015-09-10 15:00:29

属性


依赖模型 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 当定时器停止的时候触发的事件

相关例子


例子1


//创建定时器,无限执行,间隔时间为200毫秒
var timer = new Std.timer({
    interval:200,
    progress:function(){
        console.log(this.elapsedCount);
    }
});
//手动开始
timer.start();
        

例子2


//每2秒执行一次
Std.timer(function(){
    console.log(this.elapsedCount);
},"2s");
        

例子3


//延迟3秒之后开始,间隔200毫秒触发,当执行次数达到5次的时候暂停
var timer = Std.timer({
    interval:200,
    delay:3000,
    progress:function(){
        if(this.elapsedCount == 5){
            this.pause();
        }
    }
});