首页 > 编程语言 >NodeJS定时任务 注:2023-4-28更新

NodeJS定时任务 注:2023-4-28更新

时间:2023-04-28 17:00:13浏览次数:39  
标签:10 NodeJS schedule 30 28 rule second 2023 minute

 

使用的node-schedule 设置定时任务

 

引入

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

 

参数解析

schedule.scheduleJob(* * * * * *)

接收六个参数,位置分别如下,如果不需要,填 * 号即可,* 代表通配符

6个占位符从左到右分别代表:秒、分、时、日、月、周几

*表示通配符,匹配任意,当秒是*时,表示任意秒数都触发,其它类推

*  *  *  *  *  *
┬  ┬  ┬  ┬  ┬  ┬

│  │  │  │  │  |

│  │  │  │  │  └ [dayOfWeek]day of week (0 - 7) (0 or 7 is Sun)

│  │  │  │  └───── [month]month (1 - 12)

│  │  │  └────────── [date]day of month (1 - 31)

│  │  └─────────────── [hour]hour (0 - 23)

│  └──────────────────── [minute]minute (0 - 59)

└───────────────────────── [second]second (0 - 59, OPTIONAL)

 

举例:

每分钟的第30秒,执行

schedule.scheduleJob('30 * * * * *', async () => {
  console.log("执行轮查任务")      
})

// 每分钟的第30秒触发: '30 * * * * *'
// 每小时的1分30秒触发 :'30 1 * * * *'
// 每天的凌晨1点1分30秒触发 :'30 1 1 * * *'
// 每月的1日1点1分30秒触发 :'30 1 1 1 * *'
// 2020年的1月1日1点1分30秒触发 :'30 1 1 1 2020 *'
// 每周1的1点1分30秒触发 :'30 1 1 * * 1'

每个参数还可以传入数值范围

const task1 = ()=>{
  //每分钟的1-10秒都会触发,其它通配符依次类推
  schedule.scheduleJob('1-10 * * * * *', ()=>{
    console.log('scheduleCronstyle:'+ new Date());
  })
}
task1()

 

 取消任务 (声明一个变量接收定时任务。执行 cancel() 即可)

const task = schedule.scheduleJob('1-10 * * * * *', ()=>{
   console.log('scheduleCronstyle:'+ new Date());
})
task.cancel()

  

 

 

不同环境下的列子

  • rule 规则 : 指定时间间隔执行方法
let rule = new schedule.RecurrenceRule();
rule.second = 10;
let Maturity = schedule.scheduleJob(rule, function(){
  console.log('现在时间:',new Date());
});

 

这是每当秒数为10时打印时间。如果想每隔10秒执行,设置 rule.second =[0,10,20,30,40,50]即可。

每天0点执行就是rule.hour =0; rule.minute =0; rule.second =0;

每月1号的10点就是rule.date =1;rule.hour =10;rule.minute =0;rule.second =0;

每周1,3,5的0点和12点就是rule.dayOfWeek =[1,3,5]; rule.hour =[0,12]; rule.minute =0; rule.second =0;

 

 

 

  • 对象风格
const schedule = require('node-schedule');
function scheduleObjectLiteralSyntax(){
    //dayOfWeek
    //month
    //dayOfMonth
    //hour
    //minute
    //second
      //每周一的下午16:11分触发,其它组合可以根据我代码中的注释参数名自由组合
    schedule.scheduleJob({hour: 16, minute: 11, dayOfWeek: 1}, function(){
        console.log('scheduleObjectLiteralSyntax:' + new Date());
    });
}
scheduleObjectLiteralSyntax();

 

标签:10,NodeJS,schedule,30,28,rule,second,2023,minute
From: https://www.cnblogs.com/naturl/p/15165529.html

相关文章

  • 题目 3158: 蓝桥杯2023年第十四届省赛真题-三国游戏(贪心)
    题目描述小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X,Y,Z(一开始可以认为都为0)。游戏有n个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第i个事件发生时会分别让X,Y,Z增加Ai,Bi,Ci。当游戏结束时(所有事件的发生与否已......
  • Unity中Android API 28之后无法HTTP请求
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复log,获取最新版运行时查看日志的工具。小新:“最近我升级到AndroidAPILevel28之后,发现发布的安卓包,网络请求都不通了,这是咋回事啊?”大智:“遇到这种问题,调试的时候首先去看日志,你研究运行日......
  • 2023-4-27 #52 来看这万千旧梦
    323AT_xmascon21_cCountMe先做没有问号的情况。把问题倒着做,每次删只能删连续段的末端\(0\),或是连续段的开头\(1\),若我们在开头插入\(0\),在结尾插入\(1\)并强制这些不能删,那么我们能将\(0\)连续段与\(1\)连续段匹配,操作可以看作将一个\(01\)变成\(0\)或是\(1\)......
  • 2023面试自动化测试面试题【含答案】,建议收藏
    1、你做了几年的测试、自动化测试,说一下selenium的原理是什么?我做了五年的测试,1年的自动化测试;selenium它是用http协议来连接webdriver,客户端可以使用Java或者Python各种编程语言来实现;2、什么项目适合做自动化测试?关键字:不变的、重复的、规范的第一点,需求变化不能......
  • 老杜2023最新Vue实战精讲(五)Vuex
    动力节点老杜全新版Vue教程笔记分享给大家学习の地止:https://www.bilibili.com/video/BV17h41137i4视频教程从Vue2开始讲解,一步一个案例,知识点由浅入深,然后很自然的过度到Vue3版本。Vue3是目前企业中使用最多的一个版本。视频中会把每一个Vue的知识点讲解的非常通透,不但举例......
  • 华为OD机试真题2023 精简版,如果距离机考时间不多了,就看这个吧(50道100分题目)
    关于华为od题库的说明2023年参加华为OD机试,你收到的短信邀请链接中提及的应该是 2022Q4 或者 2023Q1 都是A卷。只要是这样的试卷标题,那表示你使用的就是华为OD的新题库了。华为机试有三道题,前2道100分,第3道200分,总分是400分。随着时间的积累,题库内容越来越大,很多朋友现......
  • 第二届应用力学与工程结构国际学术会议(AMES 2023) 2023年6月30日-7月2日 中国大理
    第二届应用力学与工程结构国际学术会议(AMES2023)2023年6月30日-7月2日     中国大理 一、大会简介大会官网:https://ais.cn/u/Yfiiaa由河南大学、朴茨茅斯大学和马来西亚理工大学联合组织的第二届应用力学与工程结构国际学术会议(AMES2023)将于2023年6月30日至7月2日在中......
  • 1280. 学生们参加各科测试的次数
    【题目】学生表:Students+---------------+---------+|ColumnName  |Type   |+---------------+---------+|student_id   |int    ||student_name |varchar|+---------------+---------+主键为student_id(学生ID),该表内的每一行都记录有学校一名学生的......
  • hdoj 前m大的数 1280 (技巧&暴力)
    前m大的数TimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):14345   AcceptedSubmission(s):4888ProblemDescription还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的......
  • 4.28
    #include<stdio.h>main(){intm,n,number=0;printf("红球白球黑球\n");printf("......................\n");for(m=0;m<=3;m++)for(n=0;n<=3;n++)if(8-m-n<=6)printf("%2d:%d%d%d\n",++number,m,n,8-m-n);}......