为什么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

回到顶部