原本这两个也没什么好说的 用法之类的自行看文档浏览器
这里说说用setTimeout模拟setInterval spa
为何要模拟呢.用过setInterval的人可能会有这个需求code
setInterval指定的是,“开始执行”之间的间隔,所以实际上,两次执行之间的间隔会小于setInterval指定的时间。假定setInterval指定,每100毫秒执行一次,每次执行须要5毫秒,那么第一次执行结束后95毫秒,第二次执行就会开始。若是某次执行耗时特别长,好比须要105毫秒,那么它结束后,下一次执行就会当即开始。blog
var i = 1; var timer = setInterval(function() { alert(i++); }, 2000);
上面代码每隔2000毫秒,就跳出一个alert对话框。若是用户一直不点击“肯定”,整个浏览器就处于“堵塞”状态,后面的执行就一直没法触发,将会累积起来。举例来讲,第一次跳出alert对话框后,用户过了6000毫秒才点击“肯定”,那么第二次、第三次、第四次执行将累积起来,它们之间不会再有等待间隔。文档
var i = 1; var timer = setTimeout(function() { alert(i++); timer = setTimeout(arguments.callee, 2000); }, 2000)
最后it
function interval(func, wait){ var interv = function(w){ return function(){ setTimeout(interv, w); func.call(null); } }(wait); setTimeout(interv, wait); } interval(function(){ console.log(2); },1000);