setTimout 即使没有明显错误也没有延迟

问题描述 投票:0回答:1

function abc() {
    console.log("ok")
}

setTimeout(abc, 10000000000000000000000000000000)

当我运行这段代码时,它应该将 ok 的打印延迟 10000000000000000000000000000000ms,但它会立即打印出来。

我该如何解决这个问题?

javascript settimeout
1个回答
2
投票

因为您可以使用的最大值是

2,147,483,647

以上任何内容都会立即执行

浏览器在内部将延迟存储为 32 位有符号整数。当使用大于 2,147,483,647 毫秒(约 24.8 天)的延迟时,这会导致整数溢出,导致超时立即执行。

https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value

© www.soinside.com 2019 - 2024. All rights reserved.