溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Node.js中node-schedule模塊的使用方法

發(fā)布時(shí)間:2020-07-29 14:30:01 來(lái)源:億速云 閱讀:344 作者:小豬 欄目:web開(kāi)發(fā)

這篇文章主要講解了Node.js中node-schedule模塊的使用方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

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、minutehour、date、dayOfWeekmonth、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();

看完上述內(nèi)容,是不是對(duì)Node.js中node-schedule模塊的使用方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI