浅谈setInterval和setTimeout的区别

最近写在看jQuery,自己动手写了个轮播,用到了setTimeout()函数,但是效果并不理想,因为用这个函数图片只播了一张,而没有达到我想要的结果:循环轮播,后来想到,还可以用setInterval()函数,就把setTimeout()改成setInterval(),发现页面确实循环轮播了,就查资料看了一下这两个函数。
setTimeout(loop,3000)和setInterval(loop,3000)这两个函数的作用都是隔3秒执行loop这个函数,但是,它们之间是有差距的:setTimeout()只执行一次那段代码,而setInterval()在执行完一次代码之后,经过了3秒,它还会自动重复执行loop函数。

setInterval(loop,3000);
function loop(){
    alert("Hello world!");
}

在这一点区别上,如果setTimeout()想和setInterval()是相同的结果,只需要在loop函数内调用setTimeout()函数,代码如下:

function loop(){
    alert("Hello world!");
    setTimeout(loop,3000);
}

这样显示的结果会很相似,不过两者的最大区别就是,setTimeout方法不会每隔3秒钟执行一次loop函数,它是在每次调用setTimeout后过3秒钟再去执行loop函数。这意味着如果loop函数的主体部分如果需要1秒钟执行完,那么整个函数就需要4秒钟才执行一次。setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一次那个函数。
如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout。
接下来再说说setInterval的清除:clearInterval(),clearInterval()函数的作用是清除对setInterval()函数的调用,clearInterval()方法的语法是:clearInterval(intervalid);intervalid是执行setInterval()函数后返回的对象。

请多多鼓励!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值