• 3.node简单的定时任务时间处理


    需求描述:需要一个脚本执行数据库操作。具体的操作按照实际要求来。现在要求这个脚本能能够在指定的时间周期的时间点执行这段脚本。现将相关示例代码分享出来。

    function run() {
        var begin_hour = '11:05:00';/**开始时间点*/
        var cycle_time =24 * 60 * 60 * 1000;/**默认周期1天*/
        var curr_date = new Date().format('yyyy-MM-dd');/* 当前日期 */
        var curr_time = new Date().getTime();/* 当前时间时间戳 */
    
        var curr_run_time = new Date(curr_date + ' ' + begin_hour).getTime();/* 当前日期拼接开始执行时间 */
    
        var diff_time = curr_run_time - curr_time;/* 当前日期执行时间点与当前时间的时间差 */
        var ms = cycle_time;/* 距离下次执行时间的时间差 */
    
        if (diff_time >= 0) {/* 时间差大于0,证明执行时间是在当前时间之后 */
            ms = diff_time;
        } else {
            ms = cycle_time - Math.abs(diff_time);
        }
    
        /* 第一次执行使用算出的时间差,后面的执行采用固定天数的毫秒数执行 */
        var timer = setInterval(function () {
            doWork();/*具体的数据库操作*/
            clearInterval(timer);
    
            timer = setInterval(function () {
                doWork();
            }, parseInt(cycle_time));
        }, ms);
    }

    需要注意的是,使用setInterval()或者setTimeout( )做定时器的时候,当设定的时间在24天左右的时候这个方法就会无视时间间隔,直接doWork()方法。所以,当定时的时间间隔过长的时候,这个方法并不适用。

  • 相关阅读:
    kafka原理深入研究 (转 )
    redis——持久化篇
    IDEA 配置环境和相关工具整理(新手入门)
    Spring Data JPA(官方文档翻译)
    springboot:spring data jpa介绍
    JDK8-十大新特性-附demo
    JDK8新特性一览
    Maven中的pom.xml配置文件详解
    数据库面试题(更新中...)
    互联网协议系列
  • 原文地址:https://www.cnblogs.com/Nick-Hu/p/9473333.html
Copyright © 2020-2023  润新知