setTimeout()和setInterval()可以用来注册在指定的时间之后单次或重复调用的函数。
如下展示的应用函数会在等待的指定的时间之后,开始重复调用某个函数,然后过一段时间之后取消函数调用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>计时器</title>
</head>
<body>
<script>
function invoke(f, start, interval, end){
if(!start) start = 0;
if(arguments.length <= 2){
setTimeout(f, start);
}else{
setTimeout(repeat, start);
function repeat(){
var h = setInterval(f, interval);
if(end) setTimeout(function(){ clearInterval(h); }, end);
}
}
}
function getTime(){
var date = new Date();
console.log(date);
}
invoke(getTime);// 立即调用函数
//invoke(getTime, 1000);// 1s后开始调用函数
//invoke(getTime, 200, 500);// 200ms之后调用函数,每500ms调用一次
//invoke(getTime, 2000, 2000, 10000);// 2s后开始调用函数,每2s重复调用一次,直到10s之后取消函数调用
</script>
</body>
</html>