关于js中连续click时不执行访问后台请求,当点击停止2s之后,立即发起访问后台的请求的解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载,转载需在醒目位置注明出处。 https://blog.csdn.net/sinat_28771747/article/details/78373689

防止用户重复向后台发起大量请求,下面我们通过一个例子实现:

当连续点击修改温度的值时,页面上显示的值每次都根据具体情况做出修改,但是将这个值保存的数据库的操作则是在点击操作结束后2s发起的(其中若连续多次点击改变温度的值,则只是在用户最后一次修改完成后2s执行保存到数据库的操作)

点击按钮如图:


处理流程图:


算法分析

*按钮的动作主要负责:1.当没有计时时开启计时2.当已经存在计时是将计时归0,并重新开始计时

*计时器方法的主要负责:保证计时器运行,当计时达到2时,执行访问数据库的业务方法并关闭计时器。

代码实现:

var baseTime=0;
	var timer="";//定时器标识
	function timedCount(flag){
		if(flag=="true"){ //按钮点击事件点击执行的代码块
			baseTime=0;
			clearInterval(timer);//清除原有的计时器
			timer=setTimeout("timedCount('false')",1000);//参数位false表示计时器一直执行
		}else if(flag=="false"){//计时器自己调用的代码块负责一直让baseTime累加
			baseTime=baseTime+1;
			timer=setTimeout("timedCount('false')",1000);
			if(baseTime>3){
				excuChangeTemp(object);//执行业务方法
				clearInterval(timer);
			}
		}
	}

代码实现中参数flag的作用:当是点击事件的方法调用该计时器时,flag=true,当定时器自己递归调用自己的时候,flag=false;



猜你喜欢

转载自blog.csdn.net/sinat_28771747/article/details/78373689