node定时器 crontab-node

crontab-node

说明

给大家推荐一个定时器,先上git地址

https://github.com/luoage/crontab-node

定时方式只支持linux crontab写法,如果一个进程一直存在,可以使用 cron-parser,这里只讨论配合linux crontab一起使用的情况,目的是解决多个文件放在crontab的情况,简化定时任务。

使用方法

首先把定时器放入crontab每分钟执行一次

crontab -l

* * * * * node path/c.js

使用方法1

c.js

const crontab = require('crontab-node');

// 每两分钟执行一次
crontab('*/2 * * * *') && console.log('hit success !');

crontab是一个同步方法,提供三个参数

/**
 * 定时器
 *
 * @param {string} expression 定时器表达式
 * @param {mixed} [date] 使用moment接收的时间格式
 * @param {function|promise} [cb] 同步方法,或者promise对象
 *
 * @return boolean
 */

第二个参数,目的是防止同步执行时时间过长,接收自定义时间

使用方法2

使用node做定时器的,最重要的是如何在执行完成后关闭进程,所以这里增加了一个监听方法,上代码

const crontab = require('crontab-node');
const eventEmitter = require('crontab-node/eventEmitter');

eventEmitter.on('crontab-node exit', () => {
	process.exit(0);
});
const promise = new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, 1);
});

setInterval(() => {
  console.log(new Date());

  crontab('*/2 * * * *', undefined, () => {
    return promise.then(() => {
      console.log('I am callback, just excute once');
    });
  });
}, 1000);

所有方法执行完成后抛出 “crontab-node exit” 事件, 监听后可以把进程关闭掉。PHP的小伙伴如果使用laravel框架,它内部定时器也是这种方式。

效果

效果图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值