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