用于系统中定时任务的调度,主要基于node-schedulej进行使用。 比如:简单的定时任务实现
schedule.scheduleJob('*/5 * * * *', async () => {
const time = moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
try {
// 具体任务
} catch(error) {
// 异常捕获处理
}
});
node schedule用于基于时间的调度,而不是基于时间间隔的调度。
比如“每5分钟运行一次这个函数”,你会发现setInterval
更容易使用,而且也更合适。
但是,如果你想要“在20:运行这个功能”。如果,你想每个月的第三个星期二每小时50个,你会发现
node schedule 更合适。
node schedule 采用Cron-style的风格。每一个scheduled的任务在Node Schedule里面都
相当于一个job。Job是一个EventEmitter对象,每次执行后都会发起run事件,同样也会抛'canceled,'
'scheduled'等事件。
The cron 的格式样式如下:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
cron 格式使用举例:
var schedule = require('node-schedule');
var j = schedule.scheduleJob('42 * * * *', function(){
console.log('The answer to life, the universe, and everything!');
});
当时刻在42分钟时,执行这个cron任务。e.g.:19:42, 20:42等等.
目前, W
(nearest weekday), L
(last day of month/week), 与 #
(nth weekday
of the month) 是不支持的.
Say you very specifically want a function to execute at 5:30am on December 21, 2012. Remember - in JavaScript - 0 - January, 11 - December.
var schedule = require('node-schedule');
var date = new Date(2012, 11, 21, 5, 30, 0);
var j = schedule.scheduleJob(date, function(){
console.log('The world is going to end today.');
});
要在将来使用当前时间,您可以这样使用:
var schedule = require('node-schedule');
var date = new Date(2012, 11, 21, 5, 30, 0);
var x = 'Tada!';
var j = schedule.scheduleJob(date, function(y){
console.log(y);
}.bind(null,x));
x = 'Changing Data';
← 日志(Logger) 插件(Plugin) →