定时器的用法
- setTimeout 在一段时间后执行一次回调任务
- setInterval 每隔N秒执行回调任务
- 定时器返回一个正整数(编号),在编号池中关联对应定时器对象,以便于clearTimeout清除
- setTimeout和setInterval共享一个编号池
- 在同一个对象上(一个 window 或者 worker),
setTimeout()或者setInterval()在后续的调用不会重用同一个定时器编号。但是不同的对象使用独立的编号池。
定时器参数
- func 回调函数
- delay 时间
(可选)传递给func使用的参数arg1,arg2...
内存管理
- 在js的垃圾回收机制中,不再被程序引用的变量内存会在一定周期内被回收
- 所以我们通常使用 xx = null 的方式表示变量可以被回收
- 但定时器返回的id只是Number类型 对它的置空null是无效的,定时器对象的清空需要通过clear
代码结论
function timeout() {
var timeId = setTimeout(() => {
console.log(timeId);
timeout();
}, 4);
}
timeout();
- 结论:通过浏览器的任务管理器和memory查看 setTimeout内存增速较缓,内存回收机制有效。
function timeout() {
var timeId = setTimeout(() => {
console.log(timeId);
timeout();
}, 4);
}
timeout();
- 结论:替换成setInterval,页面内存快速增加、正常刷新无效,只能通过清除缓存刷新和关闭当前页面