Window 定时器调度观察器
设置三个时间,观察同步代码、定时器到点、回调排队和取消之间的关系。浏览器会使用真实的 setTimeout 与 setInterval,但主线程忙碌时,执行时间不会精确到毫秒。
本次实验运行
0ms
timeout 状态
未开始
interval tick
0 次
点击“运行观察”后,脚本会先登记两个定时器,再执行一段同步阻塞。阻塞结束前,即使计时已经到点,回调也不能插队执行。
日志时间线 时间为相对运行开始的近似值
读日志时抓住三件事
- 同步代码正在执行时,浏览器不能同时执行定时器回调;回调只能等主线程空下来。
- 延迟时间表示“最早可以排队”的时间,不表示“一定在这一毫秒执行”。
- 保留返回的 timer id 后,可以用
clearTimeout(id)或clearInterval(id)取消还没执行或还在重复的任务。