关于JS中的定时器!!!

时间:2022-07-12 23:24:54

定时器:
周期性定时器
一次性定时器

1. 周期性定时器: 让程序每隔一段时间间隔,反复执行一项任务
何时使用: 只要连续,有规律的持续播放的动画
如何使用: 3件事:
1. ***任务函数: 定时器每次执行的任务
function task(){...}
任务函数通常要自己考虑:*何时停止*定时器的临界值

2. 将任务函数放入定时器,定时执行:
timer=setInterval(task,interval)
其中: interval 是间隔的毫秒数
timer往往是一个全局变量: 用来保存当前定时器的序号
序号是内存中唯一标识一项任务的编号
原理:首先将task函数对象和interval时间间隔记录在定时器对象中,再返回当前任务的序号
然后,定时器会按照指定时间间隔,将task函数定时加入回调队列(callback queue)中。
只有ECS中没有正在执行的函数时,才将callbackqueue中的函数加入ECS中执行
3. 停止定时器:
clearInterval(timer);

2. 一次性定时器: 先等待一段时间,再自动执行一次任务
何时使用: 1. 如果任务只执行一次时
2. 如果动画的启动,停止,变化规律都很随意
如何使用: 3件事:
1. 任务函数:
function task(){...}
任务函数的结尾要考虑: *何时启动下一次*
2. 启动一次性定时器
timer=setTimeout(task,wait)
其中: wait是等待的毫秒数
3. 停止一次性定时器: 其实是停止等待,不再执行任务
clearTimeout(timer);
timer=null;

其实: 一次性定时器连续启动,也可实现周期性的效果
区别: 任务函数的结尾:
周期性定时器任务: 判断何时停止定时器
一次性定时器任务: 判断何时启动定时器