javascript定时器理解
window对象提供了两个方法来实现定时器的效果,
分别是 window.setTimeout() : 可以使一段代码在指定时间后运行
window.setInterval() :可以使一段代码每过指定时间就运行一次
其中前者可以使一段代码在指定时间后运行;而后者则可以使一段代码每过指定时间就运行一次。它们的原型如下:
window.setTimeout(expression,milliseconds);
window.setInterval(expression,milliseconds);
SetInterval为自动重复,setTimeout不会重复。
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
一般不用setInterval,而用setTimeout的延时递归来代替interval。
setInterval会产生回调堆积,特别是时间很短的时候。
下面使用 setTimeout举例,定义页面固定时间刷新页面 ,其方法使用了 模块模式,包含了定义延时以及清除延时方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>settimeout</title> </head> <body> <button type="button" value="开始" id='timeOutT' onclick="Timeout.time()" disabled="disabled">开始</button> <button type="button" value="关闭" id='timeOutF' onclick="Timeout.timeOutF()">关闭</button> </body> </html> <script language="JavaScript" type="text/javascript"> var Timeout = (function(){//使用模块模式定义此方法 var timeOutVal, tid; return{ time : function(){ window.location.reload(); }, timeOutT : function(){ //timeOutVal=true; //Method(); //if(timeOutVal) tid=setTimeout(this.time,1000); //time是指本身,延时递归调用自己,1000为间隔调用时间,单位毫秒 }, timeOutF : function(){ document.getElementById("timeOutT").removeAttribute('disabled'); timeOutVal=false; clearTimeout(tid); } } }()); Timeout.timeOutT(); </script>

浙公网安备 33010602011771号