1. 简介
本篇重点介绍以下知识点:
1)展示如何使用settimeout和setinterval来注册一个函数,并在指定时间调用它;
2)展示如何使用clearInterval来终止setinterval的循环调用;
2. 概念
Settimeout:可以用来注册指定时间之后单次调用的函数。
Setinterval:可以用来注册指定时间之后重复调用的函数。
clearInterval:Settimeout和Setinterval执行后都会返回一个值,将这个值传递给这个函数,在指定时间后终止执行。
3. 综合案例
/**
函数f()在未来的几种调用模式*1.在等待了若干毫秒之后调用f();
*2.若设置了interval参数并没有设置end参数,则对f()进行循环调用;
*3.如果没有设置interval和end,只在若干毫秒后调用f()一次;
*4.只指定f(),表明函数f立即执行
*/
function invoke(f,start,interval,end){
if(!start) start=0;
if(arguments.length<=2)//单次调用模式
setTimeout(f,start);
else{
setTimeout(repeat,start);//start时间后,多次调用f
function repeat(){
var h=setInterval(f,interval);
alert("h:"+h);
if(end) setTimeout(function(){clearInterval(h);},end);//先循环执行f,直到end时间结束。
}
}}
测试
<!-- 标准模式声明 -->
<!DOCTYPE html>
<html>
<head>
<style> </style>
<script src="myUtils/publicUtils.js"></script><script>
window.οnlοad=function(){
invoke(f,3000,1000,10000);
alert(111);
}
function f(){
//document.write(1+" ");
console.log(1+" ");
}
function click1(){
alert("dianji");
}
</script>
</head>
<body>
<input type="button" onclick="click1()" value="dianji"></input>
</body></html>
测试后,页面在等待3秒钟后每隔1秒钟输出数字1,并且在输出10秒钟后停止。
注意:这里在输出的同时我点击button按钮,输出“点击”字符串,表明Settimeout和Setinterval这两个函数是异步执行的。