全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

实例详解JavaScript中setTimeout函数的执行顺序

前言

setTimeout,前端工程师必定会打交道的一个函数。它看上去非常的简单,朴实,有着一个很不平凡的名字--定时器。其实网上关于JavaScript中setTimeout的文章很多,但总感觉例子不够直接具体,因此写了个简单的例子并加以解释希望能让大家明白setTimeout是如何执行的。下面话不多说了,来一起看看详细的介绍:

实例代码如下:

 var time1=new Date().getTime();
 console.log(1,time1);
 setTimeout(function(){
 var time4=new Date().getTime();
 console.log(4,time4);
 for(var a=0;a<10000000000;a++){
  a=a+1;
 }
 var time2=new Date().getTime();
 console.log(2,time2);
 },2000);

 setTimeout(function(){
 var time3=new Date().getTime();
 console.log(3,time3);
 },1000);
 setTimeout(function(){
 var time5=new Date().getTime();
 console.log(5,time5);
 },3000);
 setTimeout(function(){
 var time6=new Date().getTime();
 console.log(6,time6);
 },14000);

代码十分简单,想必大家都能看懂,执行结果如下:

解释:setTimeout属于异步执行函数,当程序执行完console.log(1,time1)后;遇到setTimeout会将该函数放入等待队列,等待当前主程序执行完毕后开始执行setTimeout,由于后面的几个都是setTimeout,因此都会放到等待队列~~~

那么这些队列里的函数谁先执行呢?就是根据setTimeout里的第二个参数(延迟时间)决定的,例如            

 setTimeout(function(){
 var time3=new Date().getTime();
 console.log(3,time3);
 },1000);

那么主程序执行完成以后的1000ms后就会执行这段代码,如果延迟时间为2000,那么主程序执行完成后2000ms就会执行这段代码,只需记住一点:延迟时间始终是相对主程序执行完毕的那个时间算的 ,并且多个setTimeout的先后顺序也是由这个延迟时间决定的,如果遇到某个setTimeout需要花费大量的时间怎么办?可以参照上图里执行结果的数字2和数字5对应的时间,由于js是单线程,所以当执行到这个setTimeout后,会将这个程序执行完成后再去执行下一个setTimeout,无论下一个setTimeout的延迟时间为多少,如果这两个setTimeout时间的差值小于第一个setTimeout消耗的时间,程序会等待这个setTimeout执行完成后立即执行下一个setTimeout,如果差值大于消耗的时间,就按照和主程序约定的延迟(setTimeout里的第二个参数)执行即可

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# settimeout执行顺序  # settimeout  # 执行函数  # js  # 函数  # JS ES6中setTimeout函数的执行上下文示例  # JS中SetTimeout和SetInterval使用初探  # js中setTimeout的妙用--防止循环超时  # JavaScript中从setTimeout与setInterval到AJAX异步  # JS中setTimeout和setInterval的最大延时值详解  # JavaScript计时器用法分析【setTimeout和clearTimeout】  # 详解JS中定时器setInterval和setTImeout的this指向问题  # JavaScript setTimeout与setTimeinterval使用案例详解  # 主程序  # 就会  # 这段  # 第二个  # 时间为  # 延迟时间  # 完成后  # 都是  # 几个  # 第一个  # 大家都  # 多个  # 说了  # 是由  # 不多  # 只需  # 这两个  # 能让  # 写了  # 再去 


相关文章: 深圳网站制作平台,深圳市做网站好的公司有哪些?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  定制建站策划方案_专业建站与网站建设方案一站式指南  5种Android数据存储方式汇总  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  建站之星后台密码遗忘?如何快速找回?  建站之星官网登录失败?如何快速解决?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星如何快速生成多端适配网站?  PHP 500报错的快速解决方法  如何通过网站建站时间优化SEO与用户体验?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  如何通过.red域名打造高辨识度品牌网站?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  建站之星后台密码遗忘或太弱?如何重置与强化?  如何选择高效稳定的ISP建站解决方案?  如何通过wdcp面板快速创建网站?  招贴海报怎么做,什么是海报招贴?  如何在云虚拟主机上快速搭建个人网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  如何快速登录WAP自助建站平台?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  高端网站建设与定制开发一站式解决方案 中企动力  如何通过cPanel快速搭建网站?  教学网站制作软件,学习*后期制作的网站有哪些?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何通过PHP快速构建高效问答网站功能?  建站之星×万网:智能建站系统+自助建站平台一键生成  如何在建站宝盒中设置产品搜索功能?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何快速搭建二级域名独立网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  大连 网站制作,大连天途有线官网?  建站主机CVM配置优化、SEO策略与性能提升指南  长沙企业网站制作哪家好,长沙水业集团官方网站?  网站图片在线制作软件,怎么在图片上做链接?  如何高效配置香港服务器实现快速建站?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  北京的网站制作公司有哪些,哪个视频网站最好?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  网站制作新手教程,新手建设一个网站需要注意些什么?  如何制作网站标识牌,动态网站如何制作(教程)?  如何在万网自助建站平台快速创建网站?  名字制作网站免费,所有小说网站的名字?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。