本篇文章主要介绍了NodeJs实现定时任务的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在项目中有个每天0点执行的函数,本来想用setInterval来实现,但觉得这种需求以后应该还会有,自己写可能拓展性不高。

搜了一下发现了node-schedule这个包。

现在记录一下使用方法

node-schedule没次都是通过新建一个scheduleJob对象来执行具体方法。

时间数值按下表表示* * * * * *

┬ ┬ ┬ ┬ ┬ ┬

│ │ │ │ │ |

│ │ │ │ │ └ [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)

使用node-schedule在指定时间执行方法var schedule = require('node-schedule');

var date = new Date(2017, 11, 16, 16, 43, 0);

var j = schedule.scheduleJob(date, function(){

console.log('现在时间:',new Date());

});

在2017年12月16日16点43分0秒,打印当时时间

指定时间间隔执行方法var rule = new schedule.RecurrenceRule();

rule.second = 10;

var j = schedule.scheduleJob(rule, function(){

console.log('现在时间:',new Date());

});

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

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;

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

....

示例

1:确定时间

例如:2014年2月14日,15:40执行var schedule = require("node-schedule");

var date = new Date(2014,2,14,15,40,0);

var j = schedule.scheduleJob(date, function(){

console.log("执行任务");

});

取消任务j.cancel();

2:每小时的固定时间

例如:每小时的40分钟执行var rule = new schedule.RecurrenceRule();

rule.minute = 40;

var j = schedule.scheduleJob(rule, function(){

console.log("执行任务");

});

3:一个星期中的某些天的某个时刻执行,

例如:周一到周日的20点执行var rule = new schedule.RecurrenceRule();

rule.dayOfWeek = [0, new schedule.Range(1, 6)];

rule.hour = 20;

rule.minute = 0;

var j = schedule.scheduleJob(rule, function(){

console.log("执行任务");

});

4:每秒执行var rule = new schedule.RecurrenceRule();

var times = [];

for(var i=1; i<60; i++){

times.push(i);

}

rule.second = times;

var c=0;

var j = schedule.scheduleJob(rule, function(){

c++;

console.log(c);

});

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

node定时任务php 卡,在NodeJs中如何实现定时任务(详细教程)相关推荐

  1. 在MATLAB中手动安装MinGW64详细教程

    在MATLAB中手动安装MinGW64详细教程 话题背景 针对MATLAB官方License限制附件安装的问题,可以尝试线下手动自行安装 部分版本的Matlab由于License到期问题或者破解版限制 ...

  2. Python中安装PyOpenGL:详细教程

    Python中安装PyOpenGL:详细教程 如果你对Python编程有一定的了解,并且在计算机图形学领域有所涉猎,你可能会使用到PyOpenGL.PyOpenGL是Python的一个OpenGL绑定 ...

  3. 在matlab中导入excel,Matlab导入Excel文件中的数据的详细教程分享

    操作Matlab时还不会导入Excel文件中的数据?本文就介绍了Matlab导入Excel文件中的数据的操作内容,想要学习的朋友可以看一看下文哦,相信对大家会有所帮助的. 直接点击鼠标操作导入数据 打 ...

  4. 在Scrapy中如何利用Xpath选择器从网页中采集目标数据——详细教程(下篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 二十四桥明月夜, 玉人何处教吹箫. ...

  5. Linux中虚拟机的安装详细教程

    Linux中虚拟机的安装详细教程 1 linux中虚拟机的安装 1.1 kvm安装条件 1.2 KVM虚拟化安装 1.3 KVM虚拟化相关信息 1.4 手动安装虚拟机步骤 1.5 脚本安装虚拟机 2 ...

  6. SpringBoot中使用Ehcache的详细教程

    本都缓存能做什么? 数据缓存在jvm中,大幅提升性能 为什么要用本地缓存? 相对于IO操作,速度快,效率高 相对于Redis,Redis是一种优秀的分布式缓存实现,受限于网卡等原因,远水救不了近火 本 ...

  7. Windows中安装配置Maven详细教程

    前言 我们现在进行Java项目开发时,项目中一般都会有依赖包的存在,而这些依赖包一般都是利用Maven进行下载管理的.但很多小伙伴还不知道Maven怎么安装配置,所以壹哥专门编写一篇详细教程,教会大家 ...

  8. 如何在python中安装Gurobi(详细教程)

    最近在python中需要用Gurobi ,看了一下别人的教程,感觉不太满意,自己安装了一下,顺便梳理一下过程. 第一步 :下载gurobi ( http://www.gurobi.com ) 下载教程 ...

  9. node.js超过php,在nodejs中如何解决超出最大的调用栈错误

    这篇文章主要介绍了nodejs超出最大的调用栈错误问题,需要的朋友可以参考下 今天早上老大和我说之前项目里面的那个数据要改动,要对 mongodb 中每条记录进行 update 操作,你写个脚本跑一下 ...

最新文章

  1. 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
  2. 雷达 lidar slam
  3. python tensorflow tf.Session().run()函数(运行操作并评估“fetches”中的张量)
  4. jsp 中forward 和 Redirect 的用法区别
  5. android listview settag,Android View中setTag的二三事
  6. linux 内核任务调度,Linux任务调度
  7. Java并发(八)——Fork/Join
  8. 按季度分类汇总_1分钟实现:按某列内容分类汇总,分页打印 Excel 表格
  9. Leetcode 242.有效的字母异位词 By Python
  10. 在思科路由器上配置SSH登录
  11. JSP实用教程 第三章 JSP内置对象
  12. 基于51单片机的gps定位系统
  13. 天津大学计算机组成原理,天津大学计算机学院计算机组成原理复习材料.docx
  14. 哪些专业不建议跨考计算机
  15. 常见亲脂性细胞膜染料DiO, Dil, DiR, Did光谱图和实验操作流程
  16. Hive alter column
  17. c语言组播源码_CLAA Class C简单组播业务的实现
  18. 第四章 DDR3和FLASH 基于ARTY A7的MicroBlaze系统搭建与应用
  19. 【NOIP2016提高组】天天爱跑步
  20. mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

热门文章

  1. 在JS中获取页面form中的一个TEXT元素的坐标值
  2. Linux下MySQL忘记密码
  3. leetcode easy problem set
  4. 学习IOS 开发需要什么?
  5. 前端工作面试问题(上)---转
  6. [原创]Installshield工具介绍
  7. Linux之pwd命令
  8. 在线多空行只保留一个工具
  9. Java 8 新的时间日期库java.time
  10. io里没有driveinfo没有_来福宝宝,愿天堂里没有病痛