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

-2 javascript settimeout

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

setTimeout(abc, 10000000000000000000000000000000)
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决?

Dil*_*han 6

因为您可以使用的最大值是2,147,483,647

上面的任何内容都会立即执行

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

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