问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JavaScript中的Timer是怎么工作的

发布网友 发布时间:2023-09-13 14:54

我来回答

1个回答

热心网友 时间:2024-08-19 04:34

通常它们的表现行为并不是那么地直观,而这是因为它们都处在一个单一线程中。让我们先来看一看三个用来创建以及操作timer的函数。var id = setTimeout(fn, delay);- 初始化一个单一的timer,这个timer将会在一定延时后去调用指定的函数。这个函数(setTimeout)将返回一个唯一的ID,我们可以通过这个ID来取消timer。var id = setInterval(fn, delay);- 与setTimeout类似,只不过它会持续地调用指定的函数(每次都有一个延时),直到timer被取消为止。clearInterval(id);,clearTimeout(id);- 接受一个timer的ID(由上述的两个函数返回的),并且停止timer的回调事件。(点击查看大图)由于JavaScript向来都只能在同一时间执行一块代码(这是由它单线程的本质决定的),所以每一个代码块都阻塞了其他的异步事件。这意味着当异步事件发生时(比如鼠标点击、timer触发或者是XMLHttpRequest完成),这些事件将进入到一个队列中等待执行(队列的实现方法因浏览器而异,我们在此只讨论一个简化的情况)。刚开始,在第一个JavaScript块中,有两个timer被初始化了:一个10ms的setTimeout和一个是10ms的setInterval。由于timer(这里的timer指setTimeout中的timer,而下文中的interval则指setInvertal中的timer)开始的时间,实际上它在第一个代码块结束前就已经触发了。然而请注意,它并不会马上执行(事实上由于单线程的存在,它也无法做到马上执行)。相反的,这个被延期执行的函数进入队列中,等待在空闲的时候被执行。当第一个JavaScript块被执行完之后,浏览器问了一个问题:有正在等待被执行的代码吗?在这个例子中,鼠标点击事件和time事件都正在队列中等待。于是浏览器选了一个(鼠标点击事件),然后马上执行它。而timer只能继续等下去。注意当鼠标点击事件正在执行的时候第一次的interval事件也触发了,与timer一样,它的事件也进入队列等待之后执行。然而,注意,当interval再次触发的时候(这个时候timer的事件正在执行),这一次它的事件被丢弃了。如果你在一个大的JavaScript代码块正在执行的时候把所有的interval回调函数都囤起来的话,其结果就是在JavaScript代码块执行完了之后会有一堆的interval事件被执行,而执行过程中不会有间隔。因此,取代的作法是浏览器情愿先等一等,以确保在一个interval进入队列的时候队列中没有别的interval。让我们来看一个例子,这个例子更好地阐释了setTimeout和setInveral之间的区别。setTimeout(function(){/* 一个很长的代码块 */setTimeout(arguments.callee,10);},10);我们在此学到了很多,让我们重述一下:JavaScript引擎只有一个线程,这使得异步事件必需列队等待执行。setTimeout和如果一个timer在将要执行的时候被阻塞,它将会等待下一个时机(比预期的延时要长)。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
笔记本wifi能够联网,但是台式机插网线网络很差 为什么这个wifi就针对一台电脑卡。 电脑连wifi看电视很卡台式电脑连接无线wifi特别卡 为什么本身台式网速特别快,可是用笔记本wifi的网速就特别慢呢... wifi很快电脑很慢是怎么回事电脑和手机连接同一个WiFi手机网速快但是... ...6个梨,要把这些梨全部放在盘子里,至少需要多少个盘子? 看图列算式,一共有多少个梨? 列式:__ 哪些原因会导致长白头发 头上白发特别多是体内缺什么呢还是病还是别的原因 ACL访问控制列表应用 2023清明为什么只放1天 抖音里带灯牌去别人直播间是什么意思? 手机市场出货量为何会大幅下滑? 玄色的俩个字的小说 请问赖茅珍30藏大约要多少钱? 非布司他片和怡清畅风片哪个效果好 汽车行驶十万公里需要保养那些项目? 十万公里的车还能跑长途吗 晚饭后多久适合锻炼 晚饭后多久锻炼比较适合 脑片放在4℃保存可以吗 盛京烟48元一盒的长啥样 姑姑失信对侄女考公务员有影响吗 windows无法完成格式化怎么办?试了好多种方法还是这样,... 汤阴小孩打预防针的地方在哪 我在VBA编程中运行程序,弹出无效外部过程,求大神指点,怎么解决? 这段VBA在excel2010中运行提示‘无效的过程名’求修改 ...专用预装软件) V3.0.0.11 官方版软件百度云资源 ...备份工具) V11.5.1 绿色英文版软件免费百度云资源 请问大佬有PrimoCache V3.0.9 中英文安装版软件免费百度云资源吗 使用JavaScript控制台如何改进工作的流程 写几个赞美邓小平爷爷的四字词语 哪两个词语写出了邓爷爷的神态完毕 民族英雄岳飞和于谦的功绩,哪位比较大 于谦的历史功绩是否超越了岳飞? 岳飞和于谦谁的功绩最大 于谦拯救了大明半壁江山,他为什么没有岳飞、袁崇焕出名? 为什么于谦作为一个拯救明朝半壁江山的人,却没有岳飞出名? 于谦跟岳飞有哪些相同之处﹖ 自来水和煤气公司哪个好 长春热力公司 长春天然气公司 长春自来水公司 哪个比较好啊 急急急... 水司,电厂,天然气厂,哪个稍微好一点?! 宝鸡市天然气公司和自来水公司哪个福利好 枣庄自来水厂,煤气公司,移动公司哪个待遇好?能转正? 两个服字的成语 有两个服字的成语 带服字的成语有哪些成语有哪些 第二个字和第四个字一样服的的成语 社区关于民族团结手工坊的名字 求幽灵毒枭高清视频在线观看的网盘资源