博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基础知识梳理--setTimeout()&setInterval()
阅读量:5009 次
发布时间:2019-06-12

本文共 1382 字,大约阅读时间需要 4 分钟。

(一),setTimeout();超时执行,超过一个时间点执行一次

setTimeout(fun,time);//fun:要执行的代码。time:等待执行的时间

执行和取消

1 var timeoutId = setTimeout(function(){2     alert('hello word')3 },1000);//一秒后执行4 5 clearTimeout(timeoutId);//取消定时器方法

小结:第二个参数表示等待多长时间的毫秒数,但是经过该时间代码不一定会执行。因为JavaScript是一个单线程解析器,因此一段时间内只能执行一段代码。为了控制代码执行,就会有一个JavaScript任务队列,这些任务会按照他们添加的顺序执行。setTimeout(),第二个参数是告诉JavaScript再过多长时间把当前的任务添加到队列中。如果队列是空的,那么添加的代码会立即执行。如果不是空的,就要等到队列前的代码执行完毕以后再执行。

(二),setInterval();间隔执行,每隔一个时间点,执行一次。

setInterval(fun,time);//fun:要执行的代码。time:代码执行的间隔

var timeoutId = setInterval(function(){    alert('hello word')},1000);//每一秒执行一次setInterval(timeoutId);//取消间隔执行

小结:拥有和setTimeout()一样的任务队列特性,且在不干涉的情况下,间歇执行会一直执行到页面被卸载。

(三)对比

setTimeout(),执行10次

var star = 0,max  = 10;function setTimeoutFun(){    star++;    //如果执行的次数还没有达到最大值,那么执行    if( star < max ){        setTimeout(setTimeoutFun,1000);    }else{        console.log("stop");    }    console.log(123);}setTimeout(setTimeoutFun,1000);

setInterval(),执行10次

var star   = 0,      max  = 10,      auto  = null;function setIntervalFun(){    star++;    //如果大于了10次,那么清除    if( star >= max ){        clearInterval(auto);        console.log("stop");    }    console.log(star);}auto = setInterval(setIntervalFun,1000);

总结:在执行超时调用是,如果没有特殊需要,没有比较跟踪ID。因为没执行完代码以后,就会自动停止。使用超时调用来模拟间隔调用是一种最佳的模式,因为后一个间隔调用可能会在前一个间歇调用结束前启动。而使用超时调用则可以避免这一点。

 

转载于:https://www.cnblogs.com/xxyy1122/p/4884316.html

你可能感兴趣的文章
CRC标准以及简记式
查看>>
SEO搜索引擎
查看>>
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>
一、Text To Speech
查看>>
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>
在word中粘贴的图片为什么显示不完整
查看>>
SQL Server 数据库的鼠标操作
查看>>
SSO ---- 转载
查看>>
net软件工程师求职简历
查看>>
总线置顶[置顶] Linux bus总线
查看>>
nullnullHandling the Results 处理结果
查看>>
NSInteger 和 NSUInteger 比较大小的注意事项
查看>>
Markdown入门指南
查看>>
第一次比赛的 C题 (好后面才补的....) CodeForces 546B
查看>>
SQL SERVER BOOK
查看>>
Oracle Extended Tracing
查看>>
python基础之内置函数补充、匿名函数、递归函数
查看>>
JS基础回顾,小练习(判断数组,以及函数)
查看>>
多任务——进程
查看>>