为什么setTimeout()对于较大的毫秒延迟值会“中断”?
将较大的毫秒值传递给时,我遇到了一些意外行为setTimeout()
。例如,
setTimeout(some_callback, Number.MAX_VALUE);
和
setTimeout(some_callback, Infinity);
两者都导致some_callback
几乎立即运行,就好像我已经过去了,0
而不是因为延迟而占用了大量资源。
为什么会这样?
回答:
这是由于setTimeout使用32位int存储延迟,因此允许的最大值为
2147483647
如果你试试
2147483648
您会遇到问题。
我只能假定这会导致JS Engine中某种形式的内部异常,并导致函数立即触发而不是根本不触发。
以上是 为什么setTimeout()对于较大的毫秒延迟值会“中断”? 的全部内容, 来源链接: utcz.com/qa/400845.html