特定计时器函数JavaScript

特定计时器函数JavaScript,javascript,Javascript,我是新来的,马上,马上就开始。 我刚开始学习编程,就想到了做这样的函数(函数?)。我知道我想从她那里得到什么,但我不知道怎么写,但我不知道这些术语。有人能帮我吗 set timer (10000ms); autostart timer = true/false; control_element = any html element (button/div) toggle play/pause timer; if timer < 9001ms && timer >=

我是新来的,马上,马上就开始。 我刚开始学习编程,就想到了做这样的函数(函数?)。我知道我想从她那里得到什么,但我不知道怎么写,但我不知道这些术语。有人能帮我吗

set timer (10000ms);
autostart timer = true/false;
control_element = any html element (button/div) toggle play/pause timer;

if timer < 9001ms && timer >= 8000ms {
    if control_element == play {
        do function1;
    }
    else if control_element == pause {
        cancel function1;
    }
}
else if timer < 8000ms && timer >= 7000ms {
    if control_element == play {
        do function2;
    }
    else if control_element == pause {
        cancel function2;
    }
}
else if timer < 7000ms && timer > 0ms {
    if control_element == play {
        do function3;
    }
    else if control_element == pause {
        cancel function3;
    }
}
else if timer == 0ms {
    set timer = 10000ms;
    set timer = pause;
}
设置定时器(10000ms);
自动启动计时器=真/假;
control_元素=任何html元素(按钮/div)切换播放/暂停计时器;
如果计时器<9001ms&&timer>=8000ms{
如果控制元素=播放{
做功能1;
}
如果控制元素==暂停,则为else{
取消功能1;
}
}
否则,如果计时器<8000ms&&timer>=7000ms{
如果控制元素=播放{
做功能2;
}
如果控制元素==暂停,则为else{
取消功能2;
}
}
否则,如果计时器<7000ms&&timer>0ms{
如果控制元素=播放{
做功能3;
}
如果控制元素==暂停,则为else{
取消功能3;
}
}
否则,如果计时器==0毫秒{
设置定时器=10000ms;
设置定时器=暂停;
}

我发现了一个很好的计时器,可以播放和暂停,但我不知道如何根据需要配置它:

使用1ms的间隔,只需注册任务即可。我在下面提供了一个计时器类的示例:

/**
*这是一个计时器类,可以以毫秒为单位测量时间
*@类计时器
*/
变量计时器=(函数(){
/**
*创建计时器的实例。
*Max是“计时器”应该存在的毫秒数
*速率是计时器测试是否有任务准备启动的频率
*(速率越低,计时器越精确,但运行计算能力越高)
*
*@param{any}[max=无穷大]
*@param{number}[rate=0]
*@returns{Timer}
*
*@memberoftimer
*/
功能计时器(最大值、速率){
如果(最大值===void 0){
max=无穷大;
}
如果(比率===无效0){
比率=0;
}
this.max=max;
这个比率=比率;
this.interval=setInterval(this.tick.bind(this),this.rate);
/**
*“计时器”的当前状态
*
*@私人
*@type{boolean}
*@memberoftimer
*/
this.run=false;
/**
*已注册任务的列表
*
*@type{{time:number,cb:()=>any}[]}
*@memberoftimer
*/
this.tasks=[];
/**
*构成此“计时器”的“时间线”的更改列表
*“状态”确定时钟是否“运行”
*“日期”确定“计时器”何时更改为此状态
*
*@私人
*@type{{state:boolean,date:number}[]}
*@memberoftimer
*/
this.timeline=[];
}
/**
*蜱虫是“野兽的肚子”
*勾号每星期检查一次
*
*@私人
*@返回
*
*@memberoftimer
*/
Timer.prototype.tick=函数(){
//如果“计时器”不响,不要计算任何东西
如果(!this.run){
返回;
}
//获取当前时间
var currentmissions=this.getcurrentmissions();
//循环执行任务
对于(var taskIndex=0;taskIndexany}cb
*@param{number}[time=0]
*@returns{Timer}
*
*@memberoftimer
*/
Timer.prototype.addTask=函数(cb,时间){
如果(时间===无效0){
时间=0;
}
这个是.tasks.push({
cb:cb,
时间:时间
});
归还这个;
};
/**
*运行时间线并计算处于“运行”状态的毫秒时间
*
*@返回{number}
*
*@memberoftimer
*/
Timer.prototype.GetCurrentMillimes=函数(){
//用于保存计算毫秒的变量
var currentmissions=0;
//如果还没有时间表,请立即返回
如果(this.timeline.length<1){
返回当前毫秒数;
}
//运行时间线,并将“运行”状态的时间添加到“当前”
对于(var timelineIndex=1;timelineIndex0?this.timeline[this.timeline.length-1]。状态===状态:!状态)){
归还这个;
}
//将statechange添加到timeline(请参阅“timeline”属性和“getCurrentTick”方法)
这个。时间线。推({
州:州,,
日期:date.now()
});
//设置运行状态
this.run=状态;
//链接返回计时器
归还这个;
}