定时器
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval() 这两个函数来完成。
setTimeout()
setInterval()
区别
setTimeout和setInterval的主要区别在于它们的行为模式和用途。
1. 执行次数:
- setTimeout:只执行一次,在指定的延迟时间后执行一次回调函数
- setInterval:会每隔指定的时间间隔重复执行回调函数,直到被清除或窗口关闭
2. 用途:
- setTimeout:适用于需要延迟执行一次的任务,如延迟加载资源、处理动画的起始帧等
- setInterval:适用于需要周期性执行的任务,如定时轮询服务器、更新计时器等
3. 机制
-
创建和添加回调函数:
- 当调用setTimeout时,JavaScript引擎会创建一个定时器,并将回调函数添加到定时器队列中
- setInterval则是每隔指定时间间隔执行一次回调函数
-
非阻塞性:
- setTimeout和setInterval都不会阻塞其他JavaScript代码的执行。它们会在指定的延迟或间隔后异步执行回调函数
-
取消机制:
- setTimeout和setInterval都可以通过返回的定时器ID使用
clearTimeout和clearInterval来取消。如果在一个setTimeout的回调函数中再次调用setTimeout,可以实现类似setInterval的效果
- setTimeout和setInterval都可以通过返回的定时器ID使用