NodeJs入门教程之定时器和队列入门教程之定时器和队列
一一,介绍与需求介绍与需求
1.1,介绍介绍
定时任务(node-schedule),是针对Node.js的一种灵活的cron-like和not-cron-like作业调度程序。它允许您使用可选的递归规
则将作业(任意函数)安排在特定日期执行。它在任何给定的时间只使用一个计时器(而不是每秒钟/分钟重新评估即将到来的作
业)。
Async是一个实用模块,它为异步JavaScript提供了直接、强大的功能。async流程控制器–queue(队列),queue流程控制器是
一个并行的流程控制器,但是它与parallel的区别在于queue可以控制一次执行几个函数,而parallel只是让所有函数并行执行.
1.2,需求需求
实际开发项目中,会遇到很多定时任务的工作。比如:定时导出某些数据、定时发送消息或邮件给用户、定时备份什么类型的
文件等等。在当时给用户发送消息时,可能要发送的用户就不只有一两个,二是多个,这是可能就会用到队列顺序执行。
二二,定时器定时器
第一步:安装node-schedule
npm install node-schedule --save
第二步:封装定时器模块
const schedule = require('node-schedule');//定时器
const nodeTimer = {};
let cancelTimer = ''
/**
*Cron风格定时器/对象文本语法定时器
* @param executionTime :定时器字符串'30 * * * * *'/定时器对象{hour: 16, minute: 11, dayOfWeek: 1}
* @param callback :回调函数
*/
nodeTimer.scheduleTimer = (executionTime = '30 * * * * *', callback) => {
// 每分钟的第30秒触发: '30 * * * * *'
// 每小时的1分30秒触发 :'30 1 * * * *'
// 每天的凌晨1点1分30秒触发 :'30 1 1 * * *'
// 每月的1日1点1分30秒触发 :'30 1 1 1 * *'
// 2016年的1月1日1点1分30秒触发 :'30 1 1 1 2016 *'
// 每周1的1点1分30秒触发 :'30 1 1 * * 1'
cancelTimer = schedule.scheduleJob(executionTime, () => {
if (typeof callback === 'function') {
callback()
}
});
}
module.exports = nodeTimer;
第三步第三步:调用调用
在回调函数中写入要执行的任务代码,一个定时器就完成了!
引入定时器模块:
const nodeTimer = require('./node_timer.js');
1,Cron风格定时器
规则参数讲解 *代表通配符
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 – 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 – 12)
│ │ │ └────────── day of month (1 – 31)
│ │ └─────────────── hour (0 – 23)