java script setInterval设置延迟时间

java script setInterval setting the delay?

本文关键字:延迟时间 设置 setInterval script java      更新时间:2023-09-26

我们有一个每月运行一次java脚本线程的用例。但我们观察到的是,如果我们为setinterval函数提供3.5周的延迟,它不会尊重它,并开始每秒调度一次。是bug吗?对延迟付款有上限吗?

有趣的是,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(函数处理程序,可选的长超时,任何…)

参数);

WebIDL标准:

long类型是一个有符号整数类型,其值在范围内(−2147483648,2147483647)。

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

由于setTimeout工作,使用它并在处理函数结束时重新触发

或者setInterval的一半周期,你想使用一个切换,每隔一次执行你的代码