class Schedule {
constructor(msDelay) {
if(!msDelay){
msDelay = 100
}
this.msDelay = msDelay
this._once = false
this.timeOutCount = 0;
this.timeOut = null
this.interval = null
}
cancelRepeat() {
clearInterval(this.interval)
this.interval = null
}
cancelDelay() {
clearTimeout(this.interval)
this.interval = null
}
repeat(func){
if(this.interval){
return false
}
this.interval = setInterval(()=>{
func()
}, this.msDelay)
}
delay(func) {
this.timeOutCount++
if(this.timeOut){
this.cancelDelay()
}
const me = this
this.timeOut = setTimeout(()=>{
clearTimeout(me.timeOut)
me.timeOut = null
func(me.timeOutCount)
me.cancelDelay()
me.timeOutCount = 0
}, this.msDelay)
}
}