首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

setTimeout跟setInterval区别 setTimeout模拟setInterval

2012-08-25 
setTimeout和setInterval区别 setTimeout模拟setInterval实际上,setTimeout和setInterval的语法相同。它们

setTimeout和setInterval区别 setTimeout模拟setInterval

实际上,setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。

不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。

setInterval("showTime()", 5000);

setTimeout("showTime()", 5000);

这两种方法可能看起来非常像,而且显示的结果也会很相似,不过两者的最大区别就是,setTimeout方法不会每隔5秒钟就执行一次showTime函数,它是在每次调用setTimeout后过5秒钟再去执行showTime函数。这意味着如果showTime函数的主体部分需要2秒钟执行完,那么整个函数则要每7秒钟才执行一次。而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一次那个函数。

如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout。

现在我们用setTimeout来模拟setInterval,使setInterval调用函数执行完后等待5秒再执行

代码如下:


        function Log(txt) {            document.getElementById("msg").innerHTML += txt + "<br/>";        }        function showTime() {            var datatime = new Date();            Log(datatime.toTimeString());        }        window.setInterval = function (callback, delay) {            var obj = arguments.callee;            if (obj.timeout == undefined) {                obj.timeout = new Object();                obj.timeout.called = true;            }            function fn() {                if (obj.timeout.called) {                    callback();                    setTimeout(arguments.callee, delay);                }            }            fn();            return obj.timeout;        }        window.clearInterval = function (fn) {            fn.called = false;        }        result = setInterval(showTime, 1000);        function btnClick() {            clearInterval(result);        }

欢迎大家纠正。

2楼dz456932小时前
评论第一人
1楼bz5445昨天 21:50
学习了啊,不错,分析得比较仔细

热点排行