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


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();

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值