Nodejs 定时执行(node-cron)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37263637/article/details/83862250

遇到个需求要定时清理某个map, 一个setInterval实现感觉太皮,肯定会翻车。所以去万能的npm上去摸工具。搜索一下schedule,出现一个node-cron模块。看起来有很多人用,嗯….就用这个了。

Npm 文档:https://www.npmjs.com/package/cron

1 安装

npm install cron

测试code:

var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function() {
  console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');

2 使用

2.1 API

constructor(cronTime, onTick, onComplete, start, timezone, context, runOnInit, unrefTimeout)
  • cronTime [必需] 配置定时任务的时间,可以使用这可以是cron语法或JS Date对象的形式。
  • onTick [必需]在指定时间触发的回调。
  • onComplete [可选] 在作业停止时将触发的回调。
  • Start [可选]指定是否在退出构造函数之前启动作业,默认情况下,此值设置为false。
  • timeZone [可选] -指定执行的时区。这将修改相对于您的时区的实际时间 ,不设置为当前所在时区。设置为Europe/London 为UTC 0时区

2.2 cronTime时间语法

官方文档:http://crontab.org/

此模块中中cron有一定的差异,时间取值范围,且有六个字段,其中1秒是最精细的粒度。:

秒:0-59
分钟:0-59
小时:0-23
天:1-31
月份:0-11(1月至12月)
星期几:0-6(周日至周六)

排列顺序:
秒 分钟 小时 天 月份 星期几

*为通配符
-为时间段连接符
,号为分隔符,可以在某一节输入多个值
/号为步进符

2.1.1 在指定时刻执行(定时)

从1中例子可以看到*为通配 ,意思均满足。

* * * * * *

意思为均通配,导致结果就是每秒都执行

比如要在每次分钟时间为10的时候执行:

* 10 * * * *

执行结果是 每次分钟为10的 那60秒 每秒都执行。

'10 03 * * * *'

执行结果为在秒为10 分钟为3执行

'10 05 14 * * *'

执行结果为每天14点05分10秒时执行语句

'10 05 14-17 * * *'

执行结果为每天14-17点的05分10秒时执行语句。(-操作符支持选择时间端)

'11,22,25 * * * * *'

执行结果为每分钟的11 秒 22秒 25秒执行。(支持分隔)

2.1.2 间隔多少时间执行(循环)

我们可以使用通配符和/步进符实现间隔多长时间执行

*/3 * * * * *

间隔3秒执行

* */2 * * * *

间隔两份中执行

2.3 sample

2.3.1 在每分钟第10秒执行

var CronJob = require('cron').CronJob;
new CronJob('10 * * * * *', function() {
    const d = new Date();
	console.log(d);
}, null, true);

输出

2018-11-08T06:18:10.010Z
2018-11-08T06:19:10.004Z

2.3.1 间隔10秒执行

var CronJob = require('cron').CronJob;
new CronJob('*/10 * * * * *', function() {
    const d = new Date();
	console.log(d);
}, null, true);```
输出

    2018-11-08T06:19:30.008Z
    2018-11-08T06:19:40.001Z
    2018-11-08T06:19:50.001Z

猜你喜欢

转载自blog.csdn.net/m0_37263637/article/details/83862250
今日推荐