NodeJS`setTimeout`可以等待多长时间?

时间:2018-11-13 11:36:33

标签: javascript node.js server settimeout

NodeJS setTimeout可以将功能执行延迟一周吗? (假设服务器没有故障... ) 在其他一些服务器(如ASP.NET CORE)中,服务器在不使用时会进入睡眠状态,因此我们不能使用它。

在NodeJS世界中是否会发生同样的事情,或者服务器永远保持运行状态?

2 个答案:

答案 0 :(得分:3)

文档中没有任何内容表明它不起作用。但是,如果长度(以毫秒为单位)大于2147483647(24天20小时31分24秒),则延迟设置为1.

https://nodejs.org/api/timers.html#timers_settimeout_callback_delay_args

浏览器上的行为不同。毫不奇怪,如果关联的选项卡处于非活动状态,则超时会延迟。

  

如果方法上下文是Window对象,请等到Document   与方法上下文关联的状态已完全激活   超时毫秒(不一定是连续的)。

     

否则,如果方法上下文是WorkerUtils对象,请等到   超时毫秒已过去,且​​工作程序未暂停(未   必须连续)。

     

https://www.w3.org/TR/2011/WD-html5-20110525/timers.html#dom-windowtimers-settimeout

答案 1 :(得分:2)

  

回答您的问题

setTimeout的第二个参数delay是一个32位带符号整数。因此该值不能大于2147483647(约24.8天)。如果延迟大于2147483647,则日期将设置为1。(ref

  

回答用例

您可以运行cron作业,而不是使用setTimeout这么长时间的延迟。