nodejs中node-schedule调度的简单使用

由于最近在nodejs项目上遇到了关于时间调度的问题,原本打算用setTimeout和setInterval来实现的,可是在进一步考虑了一下,发现这种方式是不能满足的,后面查了一下,发现nodejs中已经有大牛写了一个开源的node-schedule包用来解决关于调度问题的,这里我只是简单的弄一个例子来实现调度,在我做的模块中主要是想在特定的时间去执行一个我定义好的方法,这里我用俩种方法来实现这个功能的,一种是用javascript自带的setInterval()方法和node-schedule包中的调度来实现,请各位看官发现不对的地方指出来,改之

  • setInterval方法实现
    首先定义一个需要执行的方法,如下
function execute(params){
    console.log((new Date).getTimes());
    //这里写该方法执行的逻辑,我这里只是打印一下执行的时间
}

下面是关于setInterval来实现调度的逻辑部分,这里的方法不是一个完整的方法,这里我只写了关于setInterval的部分

var excuteDate;//这个是定义执行该方法的时间,看自己喜欢哪一种方式,如字符串2017-03-20;或者cron表达式等,,,,
var excuteId = setInterval(function(){
    var date = new Date();
    //这里做一个判断
    if(date==excuteDatee){//这里是一个伪判断,实际情况看自己的需求来判断
        //这里执行该方法
        execute(params);//params为定义好的一个参数
        //如果你定义的一个时间只是该方法只执行一次的话,在这里最好关闭该定时器
        //clearInterval(excuteId);
    }

},100);

在上面就是关于setInterval()方法来实现调度的,主要实现逻辑是利用定时器来一直跑起来,判断其中的一个时间点是否满足执行该方法的时间。注意的是这里我设置的是100毫秒,看自己需求来,看自己需要设计多少时间来执行一次这个判断逻辑。

  • node-schedule方式实现
    在用node-schedule方法实现之前了,首先我们要引用该包,默认这里已经把该包引到了项目中了(在package.json中添加好了,并且运行了该json文件),这里的方法还是用上面定义的execute方法,部分代码如下
var schedule = require("node-schedule");
var cronStr = "59 23 20 3 2017 *";//cron表达式,这个表示在2017年3月20 日23点59分
var scheduId = 1;//方便后面取消调度的时候用
schedule.scheduleJob(scheduId,cronStr,execute(param));

是不是觉得node-schedule包比setInterval()方法简单多了,上面这个只是开启调度,如果该调度不要了,想要暂停的话可以用下面的代码来暂停

if(schedule.scheduledJobs[scheduId ]){//这里下次继续写
    schedule.cancelJob(scheduId);//这里如果想判断一下是否关闭成功的话,该方法会返回一个boolean类型的值(true:成功;否则反之)
}

上面提到的cron表达式是用来告诉schedule什么时候来调度该方法,如果想要详细了解cron表达式的话请点击https://www.npmjs.com/package/cron
上面就是关于node-schedule调度的模式,如果看官们觉得想要进一步了解的话,请进入https://github.com/node-schedule/node-schedule

猜你喜欢

转载自blog.csdn.net/fuweilian1/article/details/64128023