最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node schedule實現(xiàn)定時任務的示例代碼

 更新時間:2024年08月08日 10:02:14   作者:鄒榮樂  
實際工作中,可能會遇到定時清除某個文件夾內(nèi)容,本文主要介紹了node schedule實現(xiàn)定時任務的示例代碼,具有一定的參考價值,感興趣的可以了解一下

一、定時任務

實際工作中,可能會遇到定時清除某個文件夾內(nèi)容,定時發(fā)送消息或發(fā)送郵件給指定用戶,定時導出某些數(shù)據(jù)等。借助setTimeout和setInterval來實現(xiàn)的化太過麻煩,node-schedule是一個非常不錯的npm包,可以幫助我們快速的創(chuàng)建和管理定時任務。

定時任務是指在預定的時間點或時間間隔內(nèi)執(zhí)行的任務或操作。它們是自動化執(zhí)行特定邏輯的一種方式,可用于執(zhí)行重復性的、周期性的或計劃性的任務。

定時任務通常用于以下情況:

  • 數(shù)據(jù)管理與備份:定時任務可以用于定期備份數(shù)據(jù)庫中的數(shù)據(jù),確保數(shù)據(jù)的安全性和可靠性。此外,還可以用于多個數(shù)據(jù)源之間的數(shù)據(jù)同步,保證數(shù)據(jù)的一致性。

  • 系統(tǒng)監(jiān)控與維護:定時任務可以用于監(jiān)控系統(tǒng)中的各種指標和狀態(tài),如服務器負載、數(shù)據(jù)庫連接池的使用情況等,及時發(fā)現(xiàn)并解決潛在的問題。同時,也可以用于定期刷新緩存,保證緩存數(shù)據(jù)的及時性和準確性。

  • 執(zhí)行定時任務:定時器可以用于在預定的時間間隔內(nèi)執(zhí)行特定的任務或代碼塊,例如數(shù)據(jù)備份、日志清理、緩存刷新等操作。

  • 定時提醒和通知:定時器可以用于實現(xiàn)定時提醒和通知功能,如鬧鐘、定時器應用等,通過設置定時器,在指定的時間點觸發(fā)提醒或通知,幫助用戶記住重要事件或完成特定任務。

  • 自動保存和自動提交:定時器可以用于自動保存或自動提交表單數(shù)據(jù),通過設置定時器,在一定的時間間隔內(nèi)自動將用戶輸入的數(shù)據(jù)保存到服務器或數(shù)據(jù)庫,避免數(shù)據(jù)丟失或用戶忘記保存的情況。

  • 定時刷新頁面內(nèi)容:定時器可以用于定時刷新頁面的特定部分或整個頁面,通過設置定時器,在一定的時間間隔內(nèi)更新頁面內(nèi)容,如實時展示新聞、股票行情等。

  • 會話管理與心跳檢測:在Web應用中,定時器可以用來檢查并清理長時間未活動的用戶會話,以及客戶端和服務端之間利用定時器發(fā)送心跳包來維持長連接,及時發(fā)現(xiàn)連接異常。

  • 延遲執(zhí)行與調(diào)度任務:定時器可以用于延遲發(fā)送消息或在非高峰時段執(zhí)行批處理作業(yè),減輕服務器負載。

二、node-schedule

1、安裝

npm install node-schedule

2、引入

CommonJS:

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

ES模塊

import schedule from 'node-schedule'

3、基于Cron表達式的規(guī)則

Cron表達式是一種用于指定定時任務執(zhí)行時間的字符串表示形式。它由6個字段組成,每個字段表示任務執(zhí)行的時間單位和范圍。

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ 星期幾(0 - 7) (0相對于周日) 
│    │    │    │    └───── 月 (1 - 12)
│    │    │    └────────── 日 (1 - 31)
│    │    └─────────────── 時 (0 - 23)
│    └──────────────────── 分 (0 - 59)
└───────────────────────── 秒 (0 - 59)

每個字段可以接受特定的數(shù)值、范圍、通配符和特殊字符來指定任務的執(zhí)行時間:

  • 數(shù)值:表示具體的時間單位,如1、2、10等。
  • 范圍:使用-連接起始和結(jié)束的數(shù)值,表示一個范圍內(nèi)的所有值,如1-5表示1到5的所有數(shù)值。
  • 通配符:使用表示匹配該字段的所有可能值,如表示每分鐘、每小時、每天等。
  • 逗號分隔:使用逗號分隔多個數(shù)值或范圍,表示匹配其中任意一個值,如1,3表示1或3。
  • 步長:使用/表示步長,用于指定間隔的數(shù)值,如*/5表示每隔5個單位執(zhí)行一次。
  • 特殊字符:Cron表達式還支持一些特殊字符來表示特定的含義,如?用于替代日和星期字段中的任意值,L表示最后一天,W表示最近的工作日等。

使用cron字符串作為rule時,建議寫完整,可讀性比較好。

以下是一些常見的Cron表達式示例:

* * * * * *     :每秒執(zhí)行

*/5 * * * * *   :每5秒執(zhí)行

* 30 * * * *    :每30分鐘執(zhí)行

*/10 30 * * * * :每30分鐘的10秒執(zhí)行

2,4,6 * * * * * :每個2秒,4秒和6秒執(zhí)行

0 0 0 ? * 1     :每周一早上的零點執(zhí)行

* * * 20 * ?    :每月的20日觸發(fā)

4、基于Date的規(guī)則

當你需要在具體的時間執(zhí)行一次,可以使用new Date來定義一個時間。

假設您非常希望在一個精確到某一個時間點上的秒數(shù)的僅觸發(fā)一次的計劃。

const schedule = require('node-schedule');
//2024年,6月,1日,6時,1分,0秒
//month 范圍是 0~11 而非1~12
const date = new Date(2024, 5, 1, 6, 1, 0);
const job = schedule.scheduleJob(date, ()=>{
  console.log('Happy Children's Day !');
});

5、基于RecurrenceRule的規(guī)則

如果你的任務是定時重復執(zhí)行的,并且你希望有比cron更高的可讀性,你可以嘗試使用RecurrenceRule對象作為rule。

function Recurrence(year, month, date, dayOfWeek, hour, minute, second, tz)

dayOfWeek 范圍是 0~6
month 范圍是 0~11 而非1~12
如果是連續(xù)的值,node-schedule提供了一個Range函數(shù)用于創(chuàng)建連續(xù)的元素

  • 每分鐘的15、30、45秒執(zhí)行
const rule = new schedule.RecurrenceRule();
//每個15、30、45秒執(zhí)行
rule.second = [15, 30, 45];
const job = schedule.scheduleJob(rule, () => {
    console.log(`每次計劃執(zhí)行的時間:${new Date().toLocaleString()}`);
});

在這里插入圖片描述

  • 每分鐘的第10秒
rule.second = 10;

在這里插入圖片描述

  • 每小時的第10分鐘
rule.minute = 10;
  • 每周四,周五,周六,周天的17點
rule.dayOfWeek = [0, new schedule.Range(4, 6)];
rule.hour = 17;
rule.minute = 0;

6、API

  • 開啟定時任務

需要用到scheduleJob函數(shù),會返回一個Job實例對象:

function scheduleJob(name: string, rule: ..., callback: function): schedule.Job

參數(shù)

參數(shù)名參數(shù)類型參數(shù)描述
name任務名,當你沒有指定時,它將以時間戳作為名字。
rule任務調(diào)度的規(guī)則,支持多種形式的rule:
string - Cron表達式
number
schedule.RecurrenceRule
Date
callback創(chuàng)建任務時的回調(diào)函數(shù)

可以通過scheduleJob(name, rule, callback)或者scheduleJob(rule, callback)創(chuàng)建計劃。

const rule = '* * * * * *';
const job = schedule.scheduleJob(rule,()=>{});
  • 取消定時任務
schedule.cancelJob(id)

7、狀態(tài)監(jiān)聽

import schedule from 'node-schedule';

//設置規(guī)則
const rule = "*/10 * * * * *"

//設置任務
const job = schedule.scheduleJob(rule, () => {
    console.log('2、每次計劃執(zhí)行中的事件。');
});


job.on("scheduled", () => {
    console.log("1、每次計劃執(zhí)行前的事件。");
});


job.on("run", () => {
    console.log("3、每次計劃執(zhí)行后的事件。");
});


job.on("success", () => {
    console.log(`4、每次計劃執(zhí)行成功事件。`);
});


job.on("error", (err) => {
    console.log(`[error][${new Date().toLocaleString()}]${err.message}`);
});


job.on("canceled", () => {
    console.log("計劃取消!");
})

在這里插入圖片描述

到此這篇關(guān)于node schedule實現(xiàn)定時任務的示例代碼的文章就介紹到這了,更多相關(guān)node schedule 定時任務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Node.js實現(xiàn)登錄注冊功能

    Node.js實現(xiàn)登錄注冊功能

    這篇文章主要為大家詳細介紹了Node.js實現(xiàn)登錄注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Node.js中Express生成Token的實現(xiàn)方法

    Node.js中Express生成Token的實現(xiàn)方法

    本文介紹了在Express中生成和使用Token進行用戶認證的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • 手把手教你如何優(yōu)雅的書寫NestJS服務配置

    手把手教你如何優(yōu)雅的書寫NestJS服務配置

    Nest.js是一個漸進的Node.js框架,可以在TypeScript和JavaScript (ES6、ES7、ES8)之上構(gòu)建高效、可伸縮的企業(yè)級服務器端應用程序,這篇文章主要介紹了如何優(yōu)雅的書寫NestJS服務配置的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • npm報錯:npm?WARN?config?global?'--global',?'--local'?are?deprecated解決

    npm報錯:npm?WARN?config?global?'--global',?&apo

    這篇文章主要給大家介紹了關(guān)于npm報錯:npm?WARN?config?global?'--global',?'--local'?are?deprecated.?Use?`--location=global`?instead.的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Node工程的依賴包管理方式

    Node工程的依賴包管理方式

    在前端工程化中,JavaScript 依賴包管理是非常重要的一環(huán)。依賴包通常是項目所依賴的第三方庫、工具和框架等資源,它們能夠幫助我們減少重復開發(fā)、提高效率并且確保項目可以正確的運行。本文詳細介紹了Node工程的依賴包管理方式,感興趣的同學可以參考一下
    2023-04-04
  • nodejs中模塊查找規(guī)則

    nodejs中模塊查找規(guī)則

    本文介紹了Node.js模塊的查找規(guī)則,主要包括核心模塊、相對路徑、絕對路徑和第三方模塊的解析方式,具有一定的參考參考價值,感興趣的可以了解一下
    2026-01-01
  • nodejs開發(fā)微信小程序?qū)崿F(xiàn)密碼加密

    nodejs開發(fā)微信小程序?qū)崿F(xiàn)密碼加密

    本文給大家分享的是在使用nodejs開發(fā)微信小程序的過程中,實現(xiàn)密碼加密的示例代碼,非常簡單,有需要的小伙伴可以參考下
    2017-07-07
  • 用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼

    用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼

    這篇文章主要介紹了用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • NodeJs?Express中間件超詳細講解

    NodeJs?Express中間件超詳細講解

    Express中間件本質(zhì)上就是一個function處理函數(shù),多個中間件之間,共享同一份req和res,我們就可以在上游的中間件中統(tǒng)一為req或者res對象添加自定義的屬性或方法,供下游的中間件或路由進行使用,非常方便
    2022-08-08
  • 教你用NodeJs構(gòu)建屬于自己的前端腳手工具

    教你用NodeJs構(gòu)建屬于自己的前端腳手工具

    對于腳手架我們可能天天都在接觸,像npm包管理工具,vue-cli,webpack…,但是這些腳手架是怎么做出來的,我們自己能不能做一個出來玩玩,下面這篇文章主要給大家介紹了關(guān)于如何利用NodeJs構(gòu)建屬于自己的前端腳手工具的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論

宁阳县| 开封市| 祥云县| 尖扎县| 桐梓县| 蒲江县| 南平市| 武山县| 杭锦后旗| 黄大仙区| 平泉县| 梁平县| 平罗县| 赫章县| 宕昌县| 扎赉特旗| 清河县| 长治县| 东莞市| 南溪县| 津南区| 普兰县| 从江县| 泸西县| 靖宇县| 广元市| 凭祥市| 开远市| 乐平市| 南木林县| 长海县| 沅陵县| 大余县| 宁夏| 滁州市| 永安市| 南乐县| 广河县| 新龙县| 横山县| 正阳县|