您的位置:首页 > 其它

超时调用和间歇调用

2017-10-28 23:44 495 查看

前言:之前一直在看JavaScript的高级程序设计,看了几百页的时候因为一些原因停了一段时间,现在接着看,发现有好多东西又忘记啦。想想主要是因为里面细节太多了,并且平时很多东西也并没有去使用,所以导致遗忘率很高。所以决定还是在每次收获了一个点以后,在这里记录一下,来加深自己的记忆。

主要区别:

超时调用setTimeout,只执行一次,自动关闭。

间歇调用setIntervalout,一直执行,需要手动关闭。

我们分别用超时调用和间歇调用实现依次弹出1-5

/*超时调用*/
var i = 1;
function alertNumber() {
if(i <= 5) {
alert(i++);
setTimeout(alertNumber, 100);
}
}
setTimeout(alertNumber, 100);


/*定时调用*/
var i = 1;
var timer = null;
timer = setInterval(function() {
if(i <= 5) {
alert(i++);
}else {
clearInterval(timer);
}
},100);


定时器的使用,在很多地方都会用到,但是我们到底使用超时调用还是间歇调用呢?通过上面的代码,我们可以很明显的知道超时调用可以实现的,那么间歇调用也可以实现。但是我们不要忘记一个问题,那么就是JavaScript是单线程语言,我们在定时器中设置的第二个参数为等待间隔时间后,将该任务加入到任务队列中。如果队列中没有任务要执行,那么就立即执行这个程序,如果有任务执行会怎么样?我们就会等待,如果我们等待时间超过设置的间隔时间,那么使用间歇调用的时候就容易出现问题。第二个间歇调用和第一个间歇调用相差就小于设置的间隔时间。所以我们在实际中最好使用超时调用,不要这里一定要注意不要出现内存泄漏,因为我们使用超时调用的时候采用了递归,如果出现了内存泄漏,那么会导致很严重的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  settimeout setinterva