Javascript java脚本setInterval设置延迟?

Javascript java脚本setInterval设置延迟?,javascript,setinterval,Javascript,Setinterval,我们有一个每月运行一次java脚本线程的用例。但我们观察到的是,如果我们为setinterval函数提供3.5周的延迟,它将不尊重它,并开始每秒进行一次调度。是虫子吗?它是否有延迟的最大限制 有趣的是,同样适用于setTimeOut <!DOCTYPE html> <html> <body> <input type="text" id="clock" /> <script> var int=setInterval(functi

我们有一个每月运行一次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>

var int=setInterval(函数(){clock()},1000*60*60*24*7*3.5);
功能时钟()
{
var d=新日期();
变量t=d.toLocaleTimeString();
document.getElementById(“时钟”).value=t;
}
停止
这非常接近0x8000000,我想知道是不是32,但某个地方的有符号算术

我刚刚检查了
setInterval
setTimeout
的规范和超时值,它们都定义为
long
值,即有符号的32位。目前尚不清楚如何处理negativetimeout值

根据规范:

长setTimeout(函数处理程序,可选长超时,任意。。。 论据)

根据标准:

长类型是一种有符号整数类型,其值在 [−2147483648、2147483647]

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

由于
setTimeout
有效,请使用它并在处理功能结束时重新触发


或者,将
setInterval
设置为所需时间的一半,并每隔一段时间使用一次切换来执行代码。

您可以只说
clock
,而不是
function(){clock()}
。在带有setInterval的javascript中,可能会出现一些错误,因此如果使用setTimeoutpossible复制
1000*60*60*24*7*3.5 = 0x7e2bce00