Nodejs定时任务node-schedule

2,004 阅读2分钟

Cron风格定时器:

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

function scheduleCronstyle(){
    schedule.scheduleJob('30 * * * * *', function(){
        console.log('scheduleCronstyle:' + new Date());
    }); 
}

scheduleCronstyle();

schedule.scheduleJob的回调函数中写入要执行的任务代码,一个定时器就完成了!

下面我们再来讲讲Cron风格定时器传入的参数具体代表什么:

从输出结果可以看出,传入的'30 * * * * *'带来的结果是每分钟的30秒时都会执行,下面来看看这个传入参数分别代码什么

* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

6个占位符从左到右分别代表:秒、分、时、日、月、周几

'*'表示通配符,匹配任意,当秒是'*'时,表示任意秒数都触发,其它类推

下面可以看看以下传入参数分别代表的意思

每分钟的第30秒触发: '30 * * * * *'

每小时的130秒触发 :'30 1 * * * *'

每天的凌晨1130秒触发 :'30 1 1 * * *'

每月的11130秒触发 :'30 1 1 1 * *'

2016年的111130秒触发 :'30 1 1 1 2016 *'

每周11130秒触发 :'30 1 1 * * 1'

这样很容易根据自已的需求用简短的代码去实现。

Cron风格定时器-范围触发

上面的传入参数占位符中还可以传入范围,比如下面示例

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

function scheduleCronstyle(){
    schedule.scheduleJob('1-10 * * * * *', function(){
        console.log('scheduleCronstyle:' + new Date());
    }); 
}

scheduleCronstyle();

结果如下图:

从输出结果可以看出每分钟的1-10秒都会触发,

其它占用符使用方法一样,输入范围可以看到参考前面"通配符解释"

取消定时器

示例如下,定时器对象的cancl方法即可

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

function scheduleCancel(){

    var counter = 1;
    var j = schedule.scheduleJob('* * * * * *', function(){
        
        console.log('定时器触发次数:' + counter);
        counter++;
        
    });

    setTimeout(function() {
        console.log('定时器取消')
        j.cancel();   
    }, 5000);
    
}

scheduleCancel();

结果如下:

来源链接:www.cnblogs.com/zhongweiv/p…