Node.js实现11-13分钟随机间隔执行脚本问题排查
问题分析与修正
你的时间计算确实有误,问题出在运算优先级和公式结构上:
原代码的间隔计算部分:
1000 * 60 * Math.floor(Math.random() * 3) + 11
实际执行顺序是:
- 先计算
1000*60(得到60000,即1分钟的毫秒数) - 乘以
Math.floor(Math.random()*3)(结果是0、1、2),得到0、60000、120000毫秒(对应0、1、2分钟) - 最后加11(这里加的是11毫秒,不是11分钟)
最终间隔范围是11毫秒到120011毫秒(约2分钟),自然远小于你预期的11-13分钟。
修正后的代码
要实现11-13分钟的随机间隔(包含11、12、13分钟三个整数值),需要把11和随机数先相加,再转换为毫秒:
setInterval(function() { // code to be executed const script = spawn('node', ['index.js']); }, 1000 * 60 * (11 + Math.floor(Math.random() * 3))); // 生成11、12、13分钟对应的毫秒数
如果需要11到13分钟之间的任意随机值(非整数分钟),可以去掉Math.floor,用Math.random()*2生成0-2分钟的随机数,再加11:
setInterval(function() { // code to be executed const script = spawn('node', ['index.js']); }, 1000 * 60 * (11 + Math.random() * 2)); // 生成11到13分钟之间的任意毫秒数
内容的提问来源于stack exchange,提问作者user567
相关产品推荐
相关产品推荐

