js定时器每天固定时间执行任务

需求:在每天的固定时间执行任务,例如每天早上08:00起床,09:00刷牙,固定时间执行固定的任务

首先,定义一个方法,在方法内接收四个参数,一个参数是接收间隔的天数,第二个参数是接收具体某个时间点,第三个参数是决定是否在启动服务时立即执行一次,第四个参数是一个执行的方法,即要定时执行的逻辑。当然,这前三个参数将定义在一个对象中,实际传入一个对象和一个函数作为参数就可以,这样整个对象可以作为配置参数。

timeoutFunc(config, func) {

  config.runNow && func()

  let nowTime = new Date().getTime()

  let timePoints = config.time.split(':').map(i => parseInt(i))

  let recent = new Date().setHours(...timePoints)

  recent >= nowTime || (recent += 24 * 3600000 )

  setTimeout(() => {

     func()

     setInterval(func, config.interval * 3600000 )

  }, recent - nowTime)

}
config:{//参数的说明

  interval: 1, //间隔天数,间隔为整数

  runNow: false, //是否立即运行

  time: "14:00:00" //执行的时间点 时在0~23之间

  }

func参数是要执行的方法。

如果需要多个时间点可以调用多次。

转载地址https://blog.csdn.net/u014789022/article/details/85119677

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值