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); //调用该函数



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