我使用node-schedule来安排在特定时间只执行一次的任务。文档显示,对我来说:
基于日期的调度:假设您非常希望某个函数在 2012 年 12 月 21 日凌晨 5:30 执行。请记住 - 在 JavaScript 中 - 0 - 一月,11 - 十二月。
const schedule = require('node-schedule'); const date = new Date(2012, 11, 21, 5, 30, 0); const job = schedule.scheduleJob(date, function(){ console.log('The world is going to end today.'); });
但是这段代码每分钟运行一次任务,我只希望它在此处指定的特定时间只运行一次任务:
const date = new Date(2012, 11, 21, 5, 30, 0);
这里的日期是默认的。我在我的代码中将其更改为将来的日期,如下所示:
const now = new Date().getTime();
const seconds = 180;
const parsedDate = new Date(Date.parse(now));
const date = new Date(parsedDate.getTime() + (1000 * seconds));
schedule.scheduleJob(date, function(data) {
console.log("Job ran @", new Date().toString());
});
在这里,我只想在当前日期 180 秒(3 分钟)后 cron 工作。但是控制台结果显示控制台日志在部署后每分钟写入一次:
> Job ran @ Tue Mar 16 2021 08:56:00 GMT+0000 (GMT)
> Job ran @ Tue Mar 16 2021 08:57:00 GMT+0000 (GMT)
> Job ran @ Tue Mar 16 2021 08:58:00 GMT+0000 (GMT)
> Job ran @ Tue Mar 16 2021 08:59:00 GMT+0000 (GMT)
谢谢你的帮助。