ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

nodejs 定时器

2022-06-10 16:37:17  阅读:204  来源: 互联网

标签:node 10 定时器 schedule nodejs rule second 执行


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

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

node-schedule 是 Node.js 的一个 定时任务(crontab)模块。我们可以使用定时任务来对服务器系统进行维护,
让其在固定的时间段执行某些必要的操作,还可以使用定时任务发送邮件、爬取数据等;

一、安装

npm install node-schedule

yarn add node-schedule

二、基础用法

使用 schedule.scheduleJob() 即可创建一个定时任务,一个简单的上手示例:

const schedule = require('node-schedule');

// 当前时间的秒值为 10 时执行任务,如:2018-7-8 13:25:10
let job = schedule.scheduleJob('10 * * * * *', () => {
console.log(new Date());
});

如何运行示例?(首先确保安装了 Node.js)
1、新建一个 *.js 文件,如:test.js,粘贴示例代码;
2、终端(或命令行)cd 到当前文件的所在目录;
3、终端执行 node test.js 即可执行代码;
4、console 会在终端界面直接输出内容;
5、Ctrl + C 可退出执行;

时间数值按下表表示


┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 星期几,取值:0 - 7,其中 0 和 7 都表示是周日
│ │ │ │ └─── 月份,取值:1 - 12
│ │ │ └────── 日期,取值:1 - 31
│ │ └───────── 时,取值:0 - 23
│ └──────────── 分,取值:0 - 59
└─────────────── 秒,取值:0 - 59(可选)
也可以指定一个具体的时间,如:

const schedule = require('node-schedule');

// 定义一个未来的时间
let date = new Date(2016, 6, 13, 15, 50, 0);

// 定义一个任务
let job = schedule.scheduleJob(date, () => {
console.log(new Date());
});

三、进阶用法

除了基础的用法,我们还可以使用一些更为灵活的方法来实现定时任务。

3.1、隔一段时间执行一次
const schedule = require('node-schedule');

// 定义规则
let rule = new schedule.RecurrenceRule();
rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒执行一次

// 启动任务
let job = schedule.scheduleJob(rule, () => {
console.log(new Date());
});
rule 支持设置的值有 second、minute、hour、date、dayOfWeek、month、year 等。一些厂家的用法,如:

每秒执行
rule.second = [0,1,2,3......59];
每分钟 0 秒执行

rule.second = 0;
每小时 30 分执行

rule.minute = 30;
rule.second = 0;
每天 0 点执行
rule.hour =0;
rule.minute =0;
rule.second =0;
每月 1 号的 10 点执行

rule.date = 1;
rule.hour = 10;
rule.minute = 0;
rule.second = 0;
每周一、周三、周五的 0 点和 12 点执行

rule.dayOfWeek = [1,3,5];
rule.hour = [0,12];
rule.minute = 0;
rule.second = 0;

四、取消任务

可以使用 cancel() 终止一个运行中的任务。

job.cancel();

标签:node,10,定时器,schedule,nodejs,rule,second,执行
来源: https://www.cnblogs.com/pansidong/p/16363706.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有