在使用过阿里云的函数计算之后知道有个 cron 表达式来实现定时执行任务的定时器。之前只知道有 setInterval (或者 settimeout)来实现感觉太皮,肯定会翻车。所以去摸工具。搜索一下出现一个 node-cron 模块。看起来有很多人用,嗯….就用这个了。
Npm 文档
https://www.npmjs.com/package/cron
1、安装
npm install cron
测试
var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function() {
console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');
要注意的是这里有个时区的填写,如果要国内的时区将 America/Los_Angeles 改为 Asia/Chongqing
2、使用
// API
constructor(cronTime, onTick, onComplete, start, timezone, context, runOnInit, unrefTimeout)
- cronTime [必需] 配置定时任务的时间,可以使用这可以是cron语法或JS Date对象的形式。
- onTick [必需]在指定时间触发的回调。
- onComplete [可选] 在作业停止时将触发的回调。
- Start [可选]指定是否在退出构造函数之前启动作业,默认情况下,
- timeZone [可选] -指定执行的时区。这将修改相对于您的时区的实际时间 ,不设置为当前所在时区。设置为Europe/London 为UTC 0时区
3、cronTime时间语法
此模块中中cron有一定的差异,时间取值范围,且有六个字段,其中1秒是最精细的粒度。:
- 秒:0-59
- 分钟:0-59
- 小时:0-23
- 天:1-31
- 月份:0-11(1月至12月)
- 星期几:0-6(周日至周六)
排列顺序:秒 分钟 小时 天 月份 星期几
以下是可用的符号:
- *为通配符
- -为时间段连接符
- ,号为分隔符,可以在某一节输入多个值
- /号为步进符
3.1、每秒都执行
* * * * * *
3.2、每次分钟为10的 那60秒 每秒都执行。
'10 03 * * * *'
3.3、在秒为10 分钟为3执行
'10 05 14 * * *'
3.4、每天14点05分10秒时执行语句
'10 05 14-17 * * *'
3.5、每天14-17点的05分10秒时执行语句
'11,22,25 * * * * *'
我们可以使用通配符和/步进符实现间隔多长时间执行
间隔3秒执行
*/3 * * * * *
间隔两分钟执行
0 */2 * * * *
在每分钟第10秒执行
var CronJob = require('cron').CronJob;
new CronJob('10 * * * * *', function() {
const d = new Date();
console.log(d);
}, null, true);
间隔10秒执行
var CronJob = require('cron').CronJob;
new CronJob('*/10 * * * * *', function() {
const d = new Date();
console.log(d);
}, null, true);
官方文档:
http://crontab.org/
转载请注明:隨習筆記 » Nodejs 定时执行(node-cron)