利用定时器监听到某个时间点时触发另外一个定时器

    技术2023-08-14  83

    const ListenerTime = 1000 * 60 * 60 ; //监控的执行间隔时间 每小时 var StartTime = 1000 * 60 * 60 * 24; //正式启动后的执行间隔时间 每天 24小时 var RunInterval ; /** * 启动的入口 */ function run(){ console.log("正在启动监听...."); var runTime = setInterval(function(){ console.log("监听中....第"+getTime('hh')+'小时'); if(getTime('hh') == 12){ //当系统时间是中午12点启动,如果是特定的其他时间可按需改动 StartInterval(); //启动要执行的方法 clearInterval(runTime); //清除监控的定时器 console.log("已关闭监听"); } },ListenerTime); } /** * 到监控时间后所要启动的定时器 */ function StartInterval(){ RunInterval = setInterval(function(){ main(); },StartTime); } /** * 主要执行的函数内容 */ function main(){ console.log(new Date()+"正式执行"); } /** * 关闭主要执行的定时器 * 需要额外调用来关闭主程序 */ function closeInterval(){ clearInterval(RunInterval); console.log("已关闭执行程序"); } /** 获取系统时间的方法 **/ /** * * @param {Object} time 想要获取时分秒的判断参数 * YY 年;MM 月;DD 日;hh 时;mm 分;ss 秒; * * return 返回类型为Number型,若参数正确,返回-1 */ function getTime(time){ var datetime = new Date(); var year = datetime.getFullYear(); var month = (datetime.getMonth() + 1); var day = datetime.getDate(); var Hours = datetime.getHours(); var Minutes =datetime.getMinutes(); var Seconds = datetime.getSeconds(); switch(time){ case "YY":return year;break; case "MM":return month;break; case "DD":return day;break; case "hh":return Hours;break; case "mm":return Minutes;break; case "ss":return Seconds;break; default:return -1; } } //模拟启动 run();

    举个应用场景,当项目无论何时被启动,都能在特定的时间开始执行,比如有的地方需要同步刷新一些数据,但是可能更新的太过于频繁,或者每更新一次所需要的时间要很久的时候,就可以定时在一些闲时间来进行刷新数据。

     

     

     

     

    Processed: 0.009, SQL: 9