gpt4 book ai didi

javascript - javascript setInterval 设置延迟?

转载 作者:行者123 更新时间:2023-11-29 15:42:24 25 4
gpt4 key购买 nike

我们有一个每月运行一次 java 脚本线程的用例。但我们观察到的是,如果我们为 setinterval 函数提供 3.5 周的延迟,它不会遵守它并开始每秒进行一次调度。这是一个错误吗?是否有任何延迟的最大限制?

有趣的是,同样适用于 setTimeOut。 -

<!DOCTYPE html>
<html>
<body>

<input type="text" id="clock" />
<script>
var int=setInterval(function(){clock()},1000*60*60*24*7*3.5);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
}
</script>

<button onclick="int=window.clearInterval(int)">Stop</button>

</body>
</html>

最佳答案

1000*60*60*24*7*3.5 = 0x7e2bce00

它非常接近 0x80000000,我想知道是否 32 但某处有符号算术可能是负责任的。

我刚刚检查了规范,setIntervalsetTimeout 的超时都被定义为 long 值,这意味着有符号的 32 位。目前尚不清楚如何处理负超时值。

来自WhatWG规范:

long setTimeout(Function handler, optional long timeout, any... arguments);

来自WebIDL标准:

The long type is a signed integer type that has values in the range [−2147483648, 2147483647].

为了解决您的问题,我可以提出两个建议:

由于setTimeout有效,所以使用它并在处理函数结束时重新触发

或者 setInterval 您想要的周期的一半,并使用切换每隔一段时间执行您的代码。

关于javascript - javascript setInterval 设置延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com