你的位置:首页 > 软件开发 > Java > 深入理解BOM系列第一篇——理解定时器setTimeout和setInterval

深入理解BOM系列第一篇——理解定时器setTimeout和setInterval

发布时间:2016-08-15 23:00:16
×目录[1]setTimeout [2]setInterval [3]运行机制[4]应用前面的话  很长时间以来,定时器一直是javascript动画的核心技术。但是,关于定时器,人们通常只了解如何使用setTimeout()和setInterval(),对它 ...

深入理解BOM系列第一篇——理解定时器setTimeout和setInterval

×
目录
[1]setTimeout [2]setInterval [3]运行机制[4]应用

  实际上,除了前两个参数,setTimeout()方法还允许添加更多的参数,它们将被传入定时器中的函数

  以下代码中,控制台大概过1000ms即1s后,输出2,而IE9-浏览器只允许setTimeout有两个参数,不支持更多的参数,会在控制台输出NaN

setTimeout(function(a,b){ console.log(a+b);},1000,1,1);

  如图所示,尽管在255ms处添加了定时器代码,但这时候还不能执行,因为onclick事件处理程序仍在运行。定时器代码最早能执行的时机是在300ms处,即onclick事件处理程序结束之后

setInterval的问题

  使用setInterval()的问题在于,定时器代码可能在代码再次被添加到队列之前还没有完成执行,结果导致定时器代码连续运行好几次,而之间没有任何停顿。而javascript引擎对这个问题的解决是:当使用setInterval()时,仅当没有该定时器的任何其他代码实例时,才将定时器代码添加到队列中。这确保了定时器代码加入到队列中的最小时间间隔为指定间隔

  但是,这样会导致两个问题:1、某些间隔被跳过;2、多个定时器的代码执行之间的间隔可能比预期的小

  假设,某个onclick事件处理程序使用serInterval()设置了200ms间隔的定时器。如果事件处理程序花了300ms多一点时间完成,同时定时器代码也花了差不多的时间,就会同时出现跳过某间隔的情况

深入理解BOM系列第一篇——理解定时器setTimeout和setInterval

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:深入理解BOM系列第一篇——理解定时器setTimeout和setInterval

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录