当前位置: 首页 > news >正文

邢台企业网站建设服务网络优化这个行业怎么样

邢台企业网站建设服务,网络优化这个行业怎么样,虚拟云电脑免费,北京网站建设软件①setTimeout 众所周知setTimeout(fn,time)是等待一段时间后,执行函数fn。在这个等待是异步的,也就是他不会站着茅坑,当前JS队列中的其他任务会按序执行但这里有个问题就是time毫秒过后的fn执行问题。是立即执行?不一定。这就像是一个买票的队…

setTimeout

众所周知setTimeout(fn,time)是等待一段时间后,执行函数fn。
在这个等待是异步的,也就是他不会站着茅坑,当前JS队列中的其他任务会按序执行
但这里有个问题就是time毫秒过后的fn执行问题。是立即执行?不一定。
这就像是一个买票的队伍,有正在买票的,有排在后面等待买票的。而setTimeout就相当于刚排到fn买票的时候他突然发现钱包一时翻不出来。
所以他就让后面的人先买。过了time时间找到钱包后,如果现在没人买票的话,他可以立即买票。否则他就只能去排队了(当所有队列中的内容执行结束后才执行)。

<input type="text" id="io" />
<div id="test" style="width:200px;height:400px;overflow:scroll;"></div>
<script>
//这个函数的执行时间在IE下肯定是大于100ms的
function lost() {var test = document.getElementById("test");var t1 = new Date();var html = [];for (var i = 0; i < 10000; i++) {html.push('<span>look at here</span>');}test.innerHTML = html.join("");var t2 = new Date();//return (t2 - t1) / 1000;纠正return t2 - t1;
}
var io = document.getElementById("io"); io.value += "A"; setTimeout(function() {io.value += "B"; }, 100);lost(); io.value += "C"; lost(); io.value += "D"; </script>

最后io的value为ACDB,也证明了不是100ms后立即执行,而是排到了队伍后面。

也有人见过setTimeout(fn,0);如果上面的内容理解了的话,这个也就不难了:如果没有队伍则立即执行,否则就排队去。


setInterval

setInterval(fn,time)就是一个重复的定时器。
每隔time时间,将fn推入队列(如果进程空闲则立刻执行),不管是否有fn正在执行或等待队列。
但是,如果当前队列中有正在等待的fn,则本次不会向队列中添加fn。如下

<input type="text" id="io" />
<input type="button" id="insert" value="INSERT" />
<input type="button" id="get" value="GET" />
<div id="test" style="width:200px;height:400px;overflow:scroll;"></div>
<script>var io = document.getElementById("io");var i = setInterval(function() {io.value += "B";}, 10);lost();lost();setTimeout(function() {clearInterval(i);}, 10);//IE下执行时间肯定会是10的好多倍的function lost() {var test = document.getElementById("test");var t1 = new Date();var html = [];for (var i = 0; i < 10000; i++) {html.push('<span>look at here</span>');}test.innerHTML = html.join("");var t2 = new Date();io.value += "C";}
</script>

结果是CCB
执行lost函数的时间是定时器的很多倍。但在这么长的时间里,定时器只向队列中推入fn一次。
这个原因也导致了以下两种不理想情况的出现。

①fn执行时间小于time的时候,经常会间隔时间不一致。

②fn执行时间大于time时,则造成没有了间隔时间(实际当中会有那么一点点的间隔)

因为这些问题,setInterval就失去了定时器的意义。

所以我们都用循环调用setTimeout来代替setInterval。原理如下

setInterval(fn,time)
//↓↓↓↓↓↓↓↓↓↓↓↓
setTimeout(function(){fn();setTimeout(arguments.callee,time);
},time);

这样就可以让每个fn之间都会至少保持time的间隔。 

注:setTimeout和setInterval的函数环境总是Window。


 

 

 

 

转载于:https://www.cnblogs.com/TiestoRay/archive/2012/11/20/2779160.html

http://www.lbrq.cn/news/2463139.html

相关文章:

  • wordpress弹幕播放器seo搜索优化是什么
  • 做网站标配论文关键词
  • 美女直接做的视频网站网络营销方案策划论文
  • 珠海网站建设运营公司app推广注册赚钱
  • 证明做二维码打款网站链接搜索引擎广告的优缺点
  • 怎样做免费网站卖东西深圳在线制作网站
  • 零元创业加盟网宁波最好的seo外包
  • wordpress不同page百度谷歌seo优化
  • 深圳著名设计网站大全临沂网站建设
  • 全球疫情最新数据统计排名人教版优化设计电子书
  • 网站备案太久了百度网络营销中心客服电话
  • 微网站方案2022今天刚刚发生地震了
  • wordpress如何上传产品西安seo排名优化推广价格
  • 网站制作与免费网站建设东莞seo代理
  • 西湖区住房和城乡建设局网站四川网站seo
  • 营销型网站制作百度手机助手安卓版
  • 套模板的网站多少钱十大经典事件营销案例
  • 秦皇岛电子网站建设湖南关键词网络科技有限公司
  • 软件外包平台良心服务上海企业优化
  • 找回老网站软文有哪些推广渠道
  • 仙游网站建设公司宁波靠谱营销型网站建设
  • 重庆做网站开发的公司百度推广客服电话
  • 浙江建设网一官方网站南京seo代理
  • 网站建设捌金手指花总二八国内最好的危机公关公司
  • 网站自动推广数据分析网
  • 最好的php网站开发工具长沙seo全网营销
  • 做兼职的网站有哪些工作站长工具seo查询软件
  • 潮流设计网站免费网站注册com
  • 律师网站建设培训班什么网站百度收录快
  • 一个域名一个ip做多个网站seo推广培训费用
  • [实战] 用1 PPS 驯服本地恒温晶振(OCXO/TCXO)
  • 深入探索嵌入式仿真教学:以酒精测试仪实验为例的高效学习实践
  • C++第一节课入门
  • 使用爬虫获取游戏的iframe地址
  • Rust与YOLO目标检测实战
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)