常听同事说setTimeout自小延迟是4ms,其实这样的说法并不全对。
- 浏览器端
HTML5标准规定
- If
timeoutis less than 0, then settimeoutto 0.- If
nesting levelis greater than 5, andtimeoutis less than 4, then settimeoutto 4
当延迟小于0,会被设为0;
当嵌套使用并且层级大于5时(浏览器实现的大于等于5),会被设为4ms。
- node端
当延迟小于1或大于2**31 - 1时,会被设为1ms。 node:v16.17.0`部分源码