如何让代码在每个周末执行?

问题描述 投票:0回答:1

我想在每周日23:59(晚上11点)执行一段代码(基本上是在每个星期结束的时候)。但是,它应该每周只执行一次。

A setInterval() 函数在这里是不行的,因为应用可能会同时被重启。

如果这能帮到你,我有一个基本的想法。

设置一个时间间隔(用 setInterval),每5-10秒检查一次,并检查是否是周日和23小时(晚上11点)。然而,这个解决方案将不一致,可能会在一周内发射一次以上。我需要一个更防弹的解决方案。

node.js intervals
1个回答
1
投票

你可以使用任何cron模块(比如 https:/www.npmjs.compackagecron),并将工作设置为 59 23 * * 0 (范围)

const { CronJob } = require('cron');
const job = new CronJob('59 23 * * 0', mySundayFunc);
job.start();

0
投票

如何计算启动时的剩余时间,就像这段代码一样。

const WEEK_IN_MS = 604800000;
const ONE_HOUR_IN_MS = 3600000;
const FOUR_DAYS_IN_MS = 4 * WEEK_IN_MS / 7;

function nextInterval() {
    return WEEK_IN_MS - ((Date.now() + FOUR_DAYS_IN_MS) % WEEK_IN_MS) - ONE_HOUR_IN_MS;
}

const interval =  nextInterval();

console.log(`run after ${interval} ms`);

setTimeout(
    () => console.log('Do it!!!'),
    interval
)
© www.soinside.com 2019 - 2024. All rights reserved.