我需要一个随机间隔的定时器,于是写了下面一段代码:
let cb = () =>
{
let randInterval = Math.random() * .1 + .1;
console.log("scheduleOnce: randInterval=", randInterval)
this.scheduleOnce(cb, randInterval);
}
cb();
这个定时器只会被调度一次,第二次只是更新了时间间隔,然后再也不会触发了,控制台输出如下:
按照注释所说: 如果回调任务已调度,那么将不会重复调度它,只会更新时间间隔参数
在这个一次性定时器的回调里面,其实任务属于即将消亡状态,它不能算已经调度的任务,因此更新时间间隔没有任何意义,因为后面紧接着就会把这个调度给杀了。
相反,这里如果使用 setTimeout 函数,则效果达到了预期。


