setTimeout与setInterval方法的区别

 

初入前端行业,在慕课学习JavaScript时做了一个简单的时间显示效果。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>当前系统时间</title>
<script language>
window.onload = function(){
showTime();
}
function checkTime(i) {
if(i<10){
i = "0"+i;
}
return i;
}
function showTime(){
var myDate = new Date();
var year = myDate.getFullYear();
var month = myDate.getMonth()+1;
var date = myDate.getDate();
var d = myDate.getDay();
var h = myDate.getHours();
var m = myDate.getMinutes();
var s = myDate.getSeconds();
m = checkTime(m);
s = checkTime(s);
var weekday = new Array(7)
weekday[0] = "星期日";
weekday[1] = "星期一";
weekday[2] = "星期二";
weekday[3] = "星期三";
weekday[4] = "星期四";
weekday[5] = "星期五";
weekday[6] = "星期六";

document.getElementById('show').innerHTML = year+'年'+month+'月'+date+'日'+weekday[d]+h+':'+m+':'+s ;
setTimeout(showTime,500);
}
</script>
</head>
<body>
<div class="content1">
<div id="show">显示时间的位置</div>
</div>
</body>
</html>

setinterval和settimeout区别:

后来在做一个抽奖系统的时候,看到了这两个方法混用,一时没搞明白,搜索了很多资料,大致总结一下自己的看法。

 

 

setTimeout(a(),500),在500毫秒后只执行1次方法a(),而setInterval(a(),500)是每隔500秒执行一次

方法a()。也就是说如果不把前者放在循环里,就不能实现后者的循环功能。

    怎样循环调用setTimeout(a(),500)方法来来实现setInterval(a(),500)的功能呢?

    比如:function a(){

             .......                  //其它代码

             setTimeout('a()',5000);  //5秒后运行a()函数

          }

    两个方法能实现同样的效果,但是还是有区别的。

    假设需要10秒时间运行a()方法里的其它代码,也就是说第一次运行至代码setTimeout('a()',5000)需要10秒。之后5秒钟再次运行a()方法,则第二次运行至代码setTimeout('a()',5000)需要25秒。   

    若用setInterval(a(),5000),不管a()方法需要多少时间运行,都是每隔5秒运行一次。

    那什么时候用setTimeout?什么时候用setInterval?

    如果不希望连续调用产生互相干扰的状况就用前者,如果希望每隔固定时间精确的执行某个动作就用后者。具体情况还是要具体分析的。

 

posted @ 2017-03-03 10:04  澹台宇鹏  阅读(345)  评论(0)    收藏  举报