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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值