Chromium setTimeout 的实现原理是:
- 延迟任务队列存储所有延迟任务
- 消息循环检查并执行已经到期的延迟任务
- 执行完已到期延时任务后,找到延迟任务队列中延迟时间最短的任务,记该任务的延迟时间为 x
- 调用操作系统定时器函数,定时 x
- x 时间后,回到步骤 2
Chromium 源码版本 91.0.4437.3,以 setTimeout(_ => {}, 100) 为例。
作者:徐鹏跃
链接:https://www.zhihu.com/question/463446982/answer/2266722098