admin管理员组文章数量:1794759
nodejs中node
由于最近在nodejs项目上遇到了关于时间调度的问题,原本打算用setTimeout和setInterval来实现的,可是在进一步考虑了一下,发现这种方式是不能满足的,后面查了一下,发现nodejs中已经有大牛写了一个开源的node-schedule包用来解决关于调度问题的,这里我只是简单的弄一个例子来实现调度,在我做的模块中主要是想在特定的时间去执行一个我定义好的方法,这里我用俩种方法来实现这个功能的,一种是用javascript自带的setInterval()方法和node-schedule包中的调度来实现,请各位看官发现不对的地方指出来,改之
- setInterval方法实现 首先定义一个需要执行的方法,如下
下面是关于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方法,部分代码如下
是不是觉得node-schedule包比setInterval()方法简单多了,上面这个只是开启调度,如果该调度不要了,想要暂停的话可以用下面的代码来暂停
if(schedule.scheduledJobs[scheduId ]){//这里下次继续写 schedule.cancelJob(scheduId);//这里如果想判断一下是否关闭成功的话,该方法会返回一个boolean类型的值(true:成功;否则反之) }上面提到的cron表达式是用来告诉schedule什么时候来调度该方法,如果想要详细了解cron表达式的话请点击www.npmjs/package/cron; 上面就是关于node-schedule调度的模式,如果看官们觉得想要进一步了解的话,请进入github/node-schedule/node-schedule
版权声明:本文标题:nodejs中node 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686477240a71876.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论