this.flag = true
this.setTime = (time, callback) => {
this.clearTime = setInterval(() => {
if (this.flag) {
if (callback)callback()
}
}, time * 1000)
}
第一种可以实现基本的定时任务,但是setInterval控制任务如网络请求,如果请求回来要花21秒,但是定时任务是20秒执行一次,第21秒开始执行下一次任务,不会等上一次的请求任务
this.setTime2 = (time, callback) => {
this.clearTime = setTimeout(() => {
if (this.flag) {
if (callback)callback()
}
}, time * 1000)
}
第二种用setTimeout模拟定时任务,不管上一次任务实际执行时间有没有超过定时器设置的时间,都可以等上一次任务执行完,在执行下一次定时任务,是可控的,所以建议用setTimeout