遇到个需求要定时清理某个map, 一个setInterval实现感觉太皮,肯定会翻车。所以去万能的npm上去摸工具。搜索一下schedule,出现一个node-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();

五、常见问题

... 待增补

参考

nodejs计算时间间隔_nodejs 如何定时执行一个函数相关推荐

  1. nodejs计算时间间隔_NodeJs笔记:setTimeout 或 setInterval 的间隔时间执行

    在 nodejs 中有时要遇到运行一个请求时不成功,希望能让它停顿一个再进行相同的操作.如果使用 setTimeout 和 setInterval 你观察其执行时会发现它并不会是我们想要的间隔时间性的 ...

  2. Linux 命令之 let -- bash 中用于计算的工具,用于执行一个或多个表达式

    文章目录 一.命令介绍 二.命令示例 自增操作 自减操作 shell 脚本中的运算表达式 一.命令介绍 let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ ...

  3. 使用oracle 的 PL/Sql 定时执行一个存储过程

    /* 使用oracle 的 PL/Sql 定时执行一个存储过程 测试目的:在表 tab 中间隔一分钟插入一条数据 实现方案: 1.通过 oracle 中 dbms_job 完成存储过程的定时调用 2. ...

  4. python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...

    RT,最近在学scrapy,写了一个简单的爬取网页数据的爬虫,利用CrawlProcess单次调用执行的时候没有问题,脚本如下,就是清空数据表然后爬取数据: class updateBoardData ...

  5. python、中循环功能可通过什么命令实现_python定时执行指定函数的方法 Python如何定时循环执行命令?...

    python中如何定时执行某一个函数 = =怎么连接..先调用注册函数 然后调用登录函数就行.顺序执行.至于如果你说注册失败不进行登录的话 直接在注册函数里面处理 注册失败 return def si ...

  6. Linux编程定时执行某函数

     前言: linux中信号提供了软中断的作用.提供了一种处理异步事件的方法 ,  可以通过信号合理的安排异步任务. linux定义了以下主要的系统信号: 名称                    ...

  7. c++循环执行一个函数_20川大计算机 | 时间复杂度,你避不开的一个考点

    文 彦 考 研 让丨梦想丨有迹可循 这是20届川大计算机 第 3 篇文章 零师姐 2017届以初试353分,复试第2的成绩考入四川大学计算机科学与技术专业.现于文彦考研担任专业课导师,辅导川大874计 ...

  8. main函数执行前执行一个函数的写法

    写个函数在main函数执行前先运行 way1:定义全局变量,变量类型为类对象,重写一下构造函数. way2.:全局变量(可以是普通全局或static全局)的初始化在程序初始阶段,先于main函数的执行 ...

  9. iOS- 延迟1秒执行一个函数

    本文列举了四种延时执行某函数的方法及其一些区别. 假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.per ...

最新文章

  1. 波段 ku_X和Ku波段小尺寸无线电设计
  2. java byte 循环左移 循环右移 rotateLeft rotateRight
  3. SpringBoot之配置自定义新建文件
  4. 2013/8月读书计划
  5. 地图数据快速渲染------基于传统GIS平台多服务器切片
  6. C++不区分大小写比较string类似CString.compareNoCase
  7. 第五十八期:从0到1 手把手教你建一个区块链
  8. 编程实战:如何管理代码里的常量
  9. 3 - Spring AOP
  10. 网络管理与维护作业2
  11. java jni so_java 用jni调用so全过程
  12. 【PB】动态报表格式自由定义的实现
  13. Win11此应用无法在你的电脑上运行怎么解决
  14. Monte-Carlo Dropout(蒙特卡罗 dropout),Aleatoric Uncertainty,Epistemic Uncertainty
  15. 使用application记录页面访问次数
  16. 国内8款热门协作软件综合比较
  17. 5月6日地图下载。同学们要练习!
  18. 数论读书笔记——欧几里得和扩展欧几里得
  19. css:hover改变另一个元素的样式
  20. Golang修改图片JPEGjpg的大小和质量

热门文章

  1. 让jquery构造出类
  2. jenkins 忘记密码或认证配置出错后解决办法
  3. VS2012在一个解决方案中添加多个项目(工程)
  4. antd-vue中的form表单label标签for导致点击文字触发输入框解决方案
  5. linux 出现 -bash-4.2# 问题的解决方法
  6. HTTP中ip地址伪造的问题以及解决办法
  7. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
  8. 【问题解决】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
  9. 关于百度地图js api的getCurrentPosition定位不准确的解决方法
  10. 如何在gradle上仅运行一个测试类