Javascript自旋执行一段代码,直到得到指定的结果或达到最大次数才结束

Javascript自旋隔段时间执行一段代码,直到得到指定的结果或达到最大次数才结束。

一.调用

1.最大自旋100次,每次间隔1秒。在满足条件时无论是否达到最大自旋次数,都会终止自选。

intervalResult(100,1000,function(){
	if(一个表达式){
		//满足条件后执行其他事情
		return true;
	}
	return false;
});

2.最大自旋100次,每次间隔1秒(不指定)。在满足条件时无论是否达到最大自旋次数,都会终止自选。

intervalResult(100,function(){
	if(一个表达式){
		//满足条件后执行其他事情
		return true;
	}
	return false;
});

2.最大自旋20次(不指定),每次间隔1秒(不指定)。在满足条件时无论是否达到最大自旋次数,都会终止自选。

intervalResult(function(){
	if(一个表达式){
		//满足条件后执行其他事情
		return true;
	}
	return false;
});

二.方法

/**
 * 每间隔固定时间去执行一个方法,除非达到最大计数量或者得到想要的结果时停止间隔时间执行
 * @param {Number ?} maxCount 最大计数 默认20【可选参数】
 * @param {Number ?} time 间隔时间 默认1000毫秒【可选参数】
 * @param {Object} flgBool 又返回值得阻断方法
 * @param {Object} loopFn 循环方法
 */
const intervalResult=function(maxCount,time,flgBool,loopFn){
	if(typeof maxCount=="function"){
		loopFn=time;
		flgBool=maxCount;
		time=1000;
		maxCount=20;
	}
	else if(typeof time=="function"){
		loopFn=flgBool;
		flgBool=time;
		time=1000;
	}
	if(typeof flgBool!="function"){
		flgBool=function(){
			return false;
		}
	}
	var i=0;
	var invSet=setInterval(function(){
		i++;
		if(i>maxCount||flgBool(i)){
			clearInterval(invSet);
			return;
		}
		if(typeof loopFn=="function"){
			loopFn();
		}
	},time);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章