• nodeJs实现定时任务 node-schedule


    最近在思考怎么做定时任务,用setInterval实现的话,个人感觉,不利于日后代码维护和功能拓展。

    然后在网上搜了一圈,搜到了node-schedule,初期看不懂,但自从看了下面这个网址后,变豁然开朗了。

    参考网站:https://www.jb51.net/article/129748.htm

    github网址:https://github.com/node-schedule/node-schedule

    在我看来,node-schedule只有三个方法,这三个方法够我们用了

    1、指定时间执行方法(简单粗暴)

    /*
    * 指定时间执行方法
    *
    * 在2018年9月26日16点0分0秒,打印
    *
    * 月份是要减一的,程序里的1月份是0
    * */
    var date = new Date(2018, 8, 26, 19, 2, 0);
    var j = schedule.scheduleJob(date, function(){
        console.log(`我在${new Date()}的时候,执行了定时任务`);
    });
    /*
    * 取消任务
    * */
    // j.cancel();
    View Code

    2、指定时间间隔执行方法(基本都是这种玩法)

    /*
    * 指定时间间隔执行方法
    *
    * 这是每当秒数为10时打印时间。
    *
    * 如果想每隔10秒执行,设置 rule.second =[0,10,20,30,40,50]即可。
    *
    * 同理:
    *    每秒执行就是rule.second =[0,1,2,3......59]
    *    每分钟0秒执行就是rule.second =0
    *    每小时30分执行就是rule.minute =30;rule.second =0;
    *    每天0点执行就是rule.hour =0;rule.minute =0;rule.second =0;
    *    ....
    *    每月1号的10点就是rule.date =1;rule.hour =10;rule.minute =0;rule.second =0;
    *    每周1,3,5的0点和12点就是rule.dayOfWeek =[1,3,5];rule.hour =[0,12];rule.minute =0;rule.second =0;
    * */
    
    /*
    * 这是每当秒数为10时打印时间。
    *
    * 每分钟的10秒钟执行
    * */
    var rule = new schedule.RecurrenceRule();
    rule.second = 10;
    var j2 = schedule.scheduleJob(rule, function(){
        console.log('每分钟执行---现在时间:',new Date());
    });
    /*
    * 取消任务
    * */
    // j2.cancel();
    
    
    
    /*
    * 这是每秒打印
    *
    * 每秒钟执行
    * */
    var rule = new schedule.RecurrenceRule();
    rule.second = [];
    let i = 0, length = 60;
    for(i; i<length; i++){
        rule.second.push(i);
    }
    var j3 = schedule.scheduleJob(rule, function(){
        console.log('每秒钟执行---现在时间:',new Date());
    });
    /*
    * 取消任务
    * */
    // j3.cancel();
    
    /*
    * 这是每秒打印
    *
    * 每天0点执行
    * */
    var rule = new schedule.RecurrenceRule();
    rule.hour = 0;
    rule.minute = 0;
    var j4 = schedule.scheduleJob(rule, function(){
        console.log('每晚0点---现在时间:',new Date());
    });
    /*
    * 取消任务
    * */
    // j4.cancel();
    View Code

    3、取消定时任务

  • 相关阅读:
    How to run Java main class and pass application arguments in Maven?
    【转】三年后再反思我的" Java Web项目管理得失谈"
    Object.keys()
    angular $resource 的 get请求 和 post请求
    vue 自定义 移动端筛选条件
    获取当前时间 YYYY-MM-DD
    vue-router 二级路由
    blob 对象 实现分片上传 及 显示进度条
    js性能优化之函数节流(分流函数)
    vue + vue-lazyload 实现图片懒加载
  • 原文地址:https://www.cnblogs.com/huoan/p/9709778.html
Copyright © 2020-2023  润新知