Nodejs node-schedule定時器

import { scheduleJob, RecurrenceRule, Range, cancelJob } from 'node-schedule';
import * as moment from 'moment';

const body = { //假設這是客戶端傳遞的定時參數
    // date: 1573470956,
    date: moment().unix(),
};

const func = (item: number) => {
    const date = moment().unix(); //使用moment獲取當前時間的時間戳
    if (!(item >= date)) { //如果設置時間小於當前時間,則爲無效時間
        console.log('請正確設置時間!');
        return false;
    }

    //使用moment進行時間轉換和拆分
    let format: string | string[] | number[] = moment.unix(date).format('YYYY-MM-DD-HH-mm-ss');
    format = format.split('-').map(v => Number(v)); //拆分時間
    const rule = new RecurrenceRule();
    rule.month = format[1] === 1 ? format[1] = 12 : format[1] - 1; //1-12月 JS中 10是11月
    rule.date = format[2];  //1-31號
    rule.hour = format[3]; //0-24小時
    rule.minute = format[4]; //0-59分
    rule.second = [new Range(0, 59)]; //0-59秒  new Range可以指定時間區間段來循環執行,如果只想執行一次,則指定0秒即可
    // rule.second = 0; 
    rule.year = format[0];
    const security = '183123-3435-32dfs-34e2w';

    const setTIme = scheduleJob(security, rule, v => {
        console.log(`執行 ${v}`);
    });

    setTIme;

    if (setTIme && setTIme.name) { //判斷數據和標識是否存在
        console.log('第一個定時任務創建成功');
        // const result = cancelJob(security); //根據標識刪除
        // if (result) {//銷燬該任務
        //     console.log('第一個銷燬成功');
        // } else {
        //     console.log('第一個銷燬失敗');
        // }
    } else {
        console.log('定時任務創建失敗,請正確設置時間');
    }
};
func(body.date); //調用該函數



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章