You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中setTimeout是否有参考时钟?修改系统时间会影响它吗?

setTimeout的触发时钟与系统时间的关系

你对setTimeout(code, delay)的基础逻辑理解是对的,但它的触发时机并不依赖系统的墙钟时间,而是基于JS引擎(或浏览器)内部的单调递增时钟。

具体细节:

  • 调用setTimeout(fn, delay)时,引擎会记录当前的单调时钟值,加上指定的delay毫秒数,作为回调的触发阈值。
  • 单调时钟是只增不减的,不受手动修改系统时间、时区切换、NTP时间同步这类操作的影响。

举个直观的例子:
你设置了一个10秒后执行的setTimeout,运行3秒后把系统时间往后调了1小时,这个回调依然会在剩余的7秒后触发,不会等到1小时后;反过来如果把系统时间往前调1小时,回调也不会提前执行,还是会等满10秒的时长。

唯一的例外情况是系统进入休眠/挂起状态:此时单调时钟会暂停,setTimeout的等待时长会包含系统休眠的时间,直到系统唤醒后才会继续计时。

内容的提问来源于stack exchange,提问作者sudo rm -rf slash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:52:36