当前位置:首页 > 日记 > 正文

javascript异步处理工作机制详细解决方案

javascript异步处理工作机制详细解决方案
在基本层次上,理解Javascript定时器是如何工作的非常重要,计时器的执行常常与我们的视觉想象不同,因为Javascript引擎是一个线程,让我们了解以下三个函数是如何控制计时器的。

var id = setTimeout(fn,延迟);-初始化一个计时器,然后执行一个指定的时间间隔后,这个函数返回一个唯一的标志,身份证(号码),我们可以用它来取消计时器。

var id = setInterval(FN,延迟);-有点类似setTimeout,但它是一个函数的连续调用(间隔时间延迟参数)直到它被取消。

ClearInterval(ID);,清除定时器(ID);-使用定时器的ID(的setTimeout和setInterval的返回值)取消定时器回调发生

为了理解计时器的内在原理,需要讨论一个重要的概念:计时器(延迟)的延迟不能保证,因为所有Javascript代码都是在线程中执行的,所有的异步事件,如鼠标单击和计时器,只有在执行机会时才执行。

这张图表中有许多信息需要理解。如果你完全理解它们,你会有很好的了解Javascript引擎实现异步的事件。这是一个一维的图标:垂直方向上显示的时间,和蓝色块代表Javascript代码执行块。例如,第一个Javascript代码执行块需要大约18ms,和执行代码块鼠标点击触发需要11ms,等等。

因为Javascript引擎每次只执行一个代码,这是由于Javascript单线程的性质,每一个Javascript代码执行块中其他的异步事件的执行。这意味着当一个异步事件(例如,鼠标点击,定时器触发,或Ajax异步请求)这些事件的回调函数后将排在最后的队列中等待执行(事实上,排队的方式不同,这取决于您的浏览器,这是一个简化的);

从第一个Javascript执行块,在第一个执行块,两个定时器初始化:一个10ms的setTimeout()和一个10 setInterval()。根据时,定时器的初始化(后定时器初始化完成),定时器会触发前的第一块被执行。然而,功能结合定时器不会立即执行(Javascript是单线程的理由不立即执行)。事实上,延迟函数将在执行队列的最后放置在转,等待下一个合适的时间再执行。

此外,我们看到在第一个Javascript执行块的鼠标单击事件。Javascript回调函数绑定在这个异步事件(我们不知道用户(点击)这一事件的实现,所以它是异步的),这个函数不会被立即执行,和上面的计时器,它会在执行队列的最后,等待下一次的执行。

当第一个Javascript执行块完成时,浏览器将立即询问一个问题:哪个函数(语句)正在等待执行在这一点上,鼠标点击事件处理函数和定时器的回调函数都在等着被处决。浏览器将选择一个处理函数,实际上选择的鼠标单击事件是因为它被称为图的先进团队,并立即执行。定时器的回调函数将等待下一个合适的执行时间。

注意当鼠标点击事件处理函数执行的setInterval回调函数触发第一次。像setTimeout回调函数,它最终将在执行队列的最后,等待执行。然而,我们必须注意这一点:当setInterval回调函数引发第二次,当setTimeout函数仍然是执行的setInterval第一个触发器将被遗弃。当一个代码块执行的时候,可能回调函数setInterval在执行队列的后排,然后代码块被执行,其结果将是一个列表的执行setInterval回调函数,这些函数之间有没有间隔因此,当排队时没有更多的间隔处理功能时,浏览器倾向于在队列中放置下一个处理函数,这是由于间距问题造成的。

我们可以发现,以往的setInterval回调函数仍然是第三setInterval回调函数执行时触发。这说明setInterval不会考虑什么是当前正在执行的一个很重要的事实,并把队列的末尾都封锁的功能。这意味着两个setInterval回调函数之间的时间区间将被牺牲(减少)。

最后,当第二setInterval回调函数的执行,我们可以看到,没有程序等待Javascript引擎执行。这意味着浏览器正在等待一个新的异步事件发生。在50ms,setInterval回调函数是一个新的再次触发,当没有执行块中执行。因此将立即执行。

让我们用一个例子来说明setTimeout和setInterval的区别:
setTimeout(){()函数(
一些长代码块…
setTimeout(参数。被叫方,10);
},10);

setInterval(){()函数(
一些长代码块…
},10);

两行代码不不同,乍看之下,但他们是不同的。的setTimeout回调函数的执行和最后的执行之间的间隔至少为10ms(可能更多,但不小于10ms),而setInterval回调函数将尝试执行每10ms一次,不管执行完最后一次。

在这里我们学到了很多知识,总结一下:

Javascript引擎是一个单独的线程,强制所有异步事件等待执行。

setTimeout和setInterval在执行异步代码的根本区别

如果计时器被阻塞,不能立即执行,则它将延迟执行,直到执行下一个可能的执行时间(比预期的时间间隔长)。

如果setInterval回调函数的执行时间足够长(比指定的时间间隔较长),他们将执行连续和他们之间没有时间间隔。

以上是本文的全部内容,希望对您学习Javascript异步处理有一定的帮助。

相关文章

PS把真实的照片变成一个滑稽的Q的

PS把真实的照片变成一个滑稽的Q的

照片,滑稽,漫画,真实,版本,本教程是把PS介绍给Q友漫画版的画面,变成现实的搞笑,教程制作的漫画很开心的感觉,也很搞笑。推荐你最喜欢的朋友一起学习一起工作。 本教程教PS照片处理学习者使用PS把照片放入Q版漫画教程中,使漫画效果非常有孕感,热…

QQ如何在电脑上安装qq技能

QQ如何在电脑上安装qq技能

安装,技能,如何在,电脑软件,QQ,安装QQ很简单,根据提示下一步。然后QQ如何在电脑上安装一台小电脑,跟大家分享详细的步骤,安装在电脑上的方式如下: 1,在开始安装时,检查软件许可协议和青少年互联网安全指南。我已经阅读并同意了,然后单击下一步安装…

如何删除Word2010背景颜色Word2010

如何删除Word2010背景颜色Word2010

背景颜色,教程,删除,电脑软件,2010背景颜色词,有时为了美丽的缘故,很多朋友会设置自己喜欢的背景颜色,为了体现个性化,很好。但大多数公众或普通的情况下,一般默认是没有背景颜色更好。然后,当你得到一个背景的彩色文档,如何去除背景颜色与你分享…

word2003简体汉字交叉转换方法Word

word2003简体汉字交叉转换方法Word

教程,转换方法,汉字,简体,电脑软件,Word2003不仅可以转换简体繁体字,也可以转换为简体中文,功能非常强大,操作非常简单,下面将教你如何改变。 用word把一个简化的繁体字的按钮相互传递 第一个打开的单词,转换工具按钮出来,查看工具栏自定义——> …

javascript(面向面向对象编程)的分析

javascript(面向面向对象编程)的分析

面向对象编程,电脑软件,javascript,AOP也被称为面向方面的编程,这是通知部具体实施,分为前(预通知)、后(后通知),左右(约通知)用弹簧,学生必须非常熟悉,并在JS,AOP技术严重忽视。但是使用它能有效地改善例如JS代码逻辑,在前面框架Dojo和YUI3 AOP的内在机…

文件操作(splfileinfo和SplFileObje

文件操作(splfileinfo和SplFileObje

文件操作,实例,标准,电脑软件,PHPSPL,在PHP SPL,两类splfileinfo和splfileobject提供处理文件操作。 splfileinfo是用来获取文件的细节: 复制代码代码如下所示: 文件大小=新splfileinfo('foo-bar .txt); print_r(阵列( getatime= >文件> getat…

如何节省手机的电池电量QQ常见问题

如何节省手机的电池电量QQ常见问题

常见问题,电池电量,节省,电脑软件,QQ,它可以在主界面上进行节电管理,节电管理提供三种节电模式,如智能节电、超长待机模式和极限模式。 根据节能需要建立21个省级项目,有效降低电耗,延长使用时间。包括Wi-Fi,智能调整移动网络,设置屏幕亮度、屏…

PS图象处理软件普通工具PS实用技巧

PS图象处理软件普通工具PS实用技巧

技术工具,工具,图象,处理软件,实用技巧,一:当你需要快速隐藏工具栏和浮动面板,单击关闭按钮一个一个面板上,然后用打开,非常方便。事实上,你也可以按下键盘上的Shift和tab键,这样浮动面板会立即隐藏屏幕上消失,然后按下两个按钮,面板会出现;如果只按…

PS使用图层样式和笔刷制作缝纫补丁

PS使用图层样式和笔刷制作缝纫补丁

图层,样式,补丁,笔刷,电脑软件,本教程是由两部分组成:牛仔布补丁和牛皮的。它也很相似,对生产过程中的两个部分:先用区域拦截想要的纹理,使用图层样式,具有浮雕效果的初步,然后缩小选区,增加中风、缝纫线可以得到初步的结果,后来添加一些细节可以增…

PS绘图教程:狐狸的详细步骤

PS绘图教程:狐狸的详细步骤

绘图,步骤,教程,狐狸,详细,那些迷人的漫画该怎么画下面的小编辑器给大家带来ps板画图教程,详细的步骤是画一个狐狸,相信很多朋友都会看到的,好吧,让我们看看吧。 下面的小编辑器将为大家带来PS绘图课程,并画出狐狸的详细步骤。我相信很多朋友会…

PPT2007主版,模板和主题的设计和应

PPT2007主版,模板和主题的设计和应

教程,模板,主版,主题,电脑软件,前言:一个完整的专业介绍,有许多地方需要统一:统一的内容、背景、色彩搭配和文本格式,这些统一应该用主版本、模板或主题来表达,如何协调有序 大师和模板:普通和个性舞蹈 在PPT2007设计文稿,除了每张幻灯片的制作,…

如何在PS图象处理软件文件并打开一

如何在PS图象处理软件文件并打开一

文件,图象,处理软件,空白,如何在,如何在PS图象处理软件文件并打开一个空白的明和明是一个很好的文件,但它是开放与PS,我应该怎么办现在让我们看看如何显示PS图象处理软件文件的内容,和你需要的朋友可以参考一下。 经常有网友问我:PSD或TIF文件,…