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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章