Javascript node.js中setTimeout的最大时间限制

Javascript node.js中setTimeout的最大时间限制,javascript,node.js,heroku,settimeout,v8,Javascript,Node.js,Heroku,Settimeout,V8,我已经在如下节点中注册了一些setTimeout函数 //Formula: minutes * 60 > seconds * 1000 > miliseconds. setTimeout(() => {console.log("One minute")}, 1 * 60 * 1000) //delay 60000 setTimeout(() => {console.log("Five minutes")}, 5 * 60 * 1000) //del

我已经在如下节点中注册了一些
setTimeout
函数

//Formula: minutes * 60 > seconds * 1000 > miliseconds.
setTimeout(() => {console.log("One minute")}, 1 * 60 * 1000)        //delay 60000
setTimeout(() => {console.log("Five minutes")}, 5 * 60 * 1000)      //delay 300000
setTimeout(() => {console.log("Ten minutes")}, 10 * 60 * 1000)      //delay 600000
setTimeout(() => {console.log("Thirty minutes")}, 30 * 60 * 1000)   //delay 1800000
setTimeout(() => {console.log("One hour")}, 60 * 60 * 1000)         //delay 3600000
setTimeout(() => {console.log("Two hours")}, 120 * 60 * 1000)       //delay 7200000
setTimeout(() => {console.log("Five hours")}, 300 * 60 * 1000)      //delay 18000000
现在的问题是
setTimeout
,当我阅读
setTimeout
文档时,花费10分钟以上的
不起作用,它的支持24.8天

当延迟大于2147483647或小于1时,延迟将设置为1


所有延迟的值都小于2147483647,而不是它为什么不工作?

我不确定您在这里到底想要实现什么。如果您想在后期执行某些操作,请使用而不是
setTimeout

你最初问题的答案是

JavaScript在内部将延迟存储为32位有符号整数。这会在使用大于2147483647的延迟时导致整数溢出,导致立即执行超时。

以上代码运行良好


当我在
node.js
repo上创建问题时,我终于得到了答案,基本上这不是node.js而是heroku问题

在herokufree中,dynos是唯一的,因为它们在30分钟不活动后进入睡眠状态,因此超过30分钟的时间不工作

所有延迟的值都小于2147483647,正如前面提到的,所以没有溢出,这不是使用cron而不是setTimeout的解决方案。抱歉,我误读了你的问题。顺便说一下,你的代码运行得很好,我已经厌倦了运行它。我看不出有任何问题。设置超时10分钟后,您无法获得console.log。这是您的问题吗?