Node.js設(shè)置定時(shí)任務(wù)之node-schedule模塊的使用詳解
node-schedule是 Node.js 的一個(gè)定時(shí)任務(wù)(crontab)模塊。我們可以使用定時(shí)任務(wù)來(lái)對(duì)服務(wù)器系統(tǒng)進(jìn)行維護(hù),讓其在固定的時(shí)間段執(zhí)行某些必要的操作,還可以使用定時(shí)任務(wù)發(fā)送郵件、爬取數(shù)據(jù)等;
一、安裝
npm install node-schedule # 或 yarn add node-schedule
二、基礎(chǔ)用法
使用schedule.scheduleJob()
即可創(chuàng)建一個(gè)定時(shí)任務(wù),一個(gè)簡(jiǎn)單的上手示例:
const schedule = require('node-schedule'); // 當(dāng)前時(shí)間的秒值為 10 時(shí)執(zhí)行任務(wù),如:2018-7-8 13:25:10 let job = schedule.scheduleJob('10 * * * * *', () => { console.log(new Date()); });
如何運(yùn)行示例?(首先確保安裝了 Node.js)
1、新建一個(gè) *.js 文件,如:test.js,粘貼示例代碼;
2、終端(或命令行)cd
到當(dāng)前文件的所在目錄;
3、終端執(zhí)行node test.js
即可執(zhí)行代碼;
4、console
會(huì)在終端界面直接輸出內(nèi)容;
5、Ctrl + C
可退出執(zhí)行;
時(shí)間數(shù)值按下表表示
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 星期幾,取值:0 - 7,其中 0 和 7 都表示是周日
│ │ │ │ └─── 月份,取值:1 - 12
│ │ │ └────── 日期,取值:1 - 31
│ │ └───────── 時(shí),取值:0 - 23
│ └──────────── 分,取值:0 - 59
└─────────────── 秒,取值:0 - 59(可選)
也可以指定一個(gè)具體的時(shí)間,如:
const schedule = require('node-schedule'); // 定義一個(gè)未來(lái)的時(shí)間 let date = new Date(2016, 6, 13, 15, 50, 0); // 定義一個(gè)任務(wù) let job = schedule.scheduleJob(date, () => { console.log(new Date()); });
三、進(jìn)階用法
除了基礎(chǔ)的用法,我們還可以使用一些更為靈活的方法來(lái)實(shí)現(xiàn)定時(shí)任務(wù)。
3.1、隔一段時(shí)間執(zhí)行一次
const schedule = require('node-schedule'); // 定義規(guī)則 let rule = new schedule.RecurrenceRule(); rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒執(zhí)行一次 // 啟動(dòng)任務(wù) let job = schedule.scheduleJob(rule, () => { console.log(new Date()); });
rule
支持設(shè)置的值有second
、minute
、hour
、date
、dayOfWeek
、month
、year
等。一些廠(chǎng)家的用法,如:
每秒執(zhí)行
rule.second = [0,1,2,3......59];
每分鐘 0 秒執(zhí)行
rule.second = 0;
每小時(shí) 30 分執(zhí)行
rule.minute = 30; rule.second = 0;
每天 0 點(diǎn)執(zhí)行
rule.hour =0; rule.minute =0; rule.second =0;
每月 1 號(hào)的 10 點(diǎn)執(zhí)行
rule.date = 1; rule.hour = 10; rule.minute = 0; rule.second = 0;
每周一、周三、周五的 0 點(diǎn)和 12 點(diǎn)執(zhí)行
rule.dayOfWeek = [1,3,5]; rule.hour = [0,12]; rule.minute = 0; rule.second = 0;
四、取消任務(wù)
可以使用cancel()
終止一個(gè)運(yùn)行中的任務(wù)。
job.cancel();
到此這篇關(guān)于Node.js設(shè)置定時(shí)任務(wù):node-schedule模塊的使用的文章就介紹到這了,更多相關(guān)Node.js設(shè)置定時(shí)任務(wù):node-schedule模塊的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
NodeJS實(shí)現(xiàn)視頻轉(zhuǎn)碼的示例代碼
本篇文章主要介紹了NodeJS實(shí)現(xiàn)視頻轉(zhuǎn)碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Node.js爬取豆瓣數(shù)據(jù)實(shí)例分析
這篇文章通過(guò)實(shí)例給大家詳細(xì)分析了Node.js爬取豆瓣數(shù)據(jù)的過(guò)程以及具體方法步驟,有興趣的朋友可以參考學(xué)習(xí)下。2018-03-03Node.js的Web模板引擎ejs的入門(mén)使用教程
ejs是Node世界的開(kāi)源模板引擎中比較有人氣的一個(gè),而且并不只是在Express框架中才可以使用,今天為大家?guī)?lái)Node.js的Web模板引擎ejs的入門(mén)學(xué)習(xí)教程,其中側(cè)重于ejs的layout頁(yè)面布局放面2016-06-06如何優(yōu)雅地在Node應(yīng)用中進(jìn)行錯(cuò)誤異常處理
這篇文章主要介紹了如何優(yōu)雅地在Node應(yīng)用中進(jìn)行錯(cuò)誤處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11輕松創(chuàng)建nodejs服務(wù)器(5):事件處理程序
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(5):事件處理程序,本系列文章將一步一步創(chuàng)建一個(gè)完整的nodejs服務(wù)器,需要的朋友可以參考下2014-12-12Node.js 條形碼識(shí)別程序構(gòu)建思路詳解
這篇文章主要介紹了Node.js 條形碼識(shí)別程序構(gòu)建思路詳解的相關(guān)資料,需要的朋友可以參考下2016-02-02window系統(tǒng)管理多版本node的實(shí)現(xiàn)
存在不同項(xiàng)目使用npm時(shí)所需要的版本不一致,又不想每次都卸載又重新安裝node,這時(shí)候就需要多版本管理器,本文主要介紹了window系統(tǒng)管理多版本node的實(shí)現(xiàn),感興趣的可以了解一下2024-02-02Windows下Node.js安裝及環(huán)境配置方法
這篇文章主要為大家介紹一下Node.js安裝及環(huán)境配置方法,這也是腳本之家小編發(fā)現(xiàn)的比較詳細(xì)的教程了,從安裝到配置都很詳細(xì),想學(xué)習(xí)Node.js的朋友可以參考一下2017-09-09