没有合适的资源?快使用搜索试试~ 我知道了~
首页深入理解 Event Loop事件循环机制
Event Loop事件循环机制 事件循环机制(Event Loop)是全面了解javascript代码执行顺序绕不开的一个重要知识点。 为什么会有事件循环机制? javascript从诞生之日起就是一门单线程的非阻塞的脚本语言。这是由其最初的用途来决定的:与浏览器交互。 首先等来了解js为什么是单线程的吧! 首先要明白线程的概念? 进程是资源分配的最小单位,线程是进程的一部分,是cpu调度的基本单位; 了解浏览器 浏览器中,每次打开一个tab页面,其实就是新开了一个进程,在这个进程中,还有js引擎线程、ui渲染线程、http请求线程。 这里面还可深入了解js引擎线程、ui渲染线程、http请
资源详情
资源评论
资源推荐

深入理解深入理解 Event Loop事件循环机制事件循环机制
Event Loop事件循环机制事件循环机制
事件循环机制(Event Loop)是全面了解javascript代码执行顺序绕不开的一个重要知识点。
为什么会有事件循环机制?为什么会有事件循环机制?
javascript从诞生之日起就是一门单线程的非阻塞的脚本语言。这是由其最初的用途来决定的:与浏览器交互。 首先等来了解
js为什么是单线程的吧!
首先要明白线程的概念?首先要明白线程的概念?
进程是资源分配的最小单位,线程是进程的一部分,是cpu调度的基本单位;
了解浏览器了解浏览器
浏览器中,每次打开一个tab页面,其实就是新开了一个进程,在这个进程中,还有js引擎线程、ui渲染线程、http请求线程。
这里面还可深入了解js引擎线程、ui渲染线程、http请求等的知识
所以为什么要设计成单线程呢?所以为什么要设计成单线程呢?
js是作为浏览器的脚本语言,主要是实现用户与浏览器的交互,以及操作dom;这决定了它只能是单线程,否则会带来很复杂
的同步问题。 举个例子:如果js被设计了多线程,如果有一个线程要修改一个dom元素,另一个线程要删除这个dom元素,此
时浏览器就会一脸茫然,不知所措。
(HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。)
而有而有event loop和和js的另一个特点非阻塞有关的另一个特点非阻塞有关
前面提到javascript的另一个特点是“非阻塞”,那么javascript引擎到底是如何实现的这一点呢?答案就是今天这篇文章的主角
——event loop(事件循环)。
非阻塞是什么意思?非阻塞是什么意思?
而非阻塞则是当代码需要进行一项异步任务(无法立刻返回结果,需要花一定时间才能返回的任务,如I/O事件)的时候,主
线程会挂起(pending)这个任务,然后在异步任务返回结果的时候再根据一定规则去执行相应的回调。
js为什么需要异步?为什么需要异步?
如果 js不存在异步,那么自上而下执行,万一上一行解析时间很长,那么下面的就会被阻塞,对用用户而言就会被卡死。导致
差的用户体验。
执行栈:同步代码的执行执行栈:同步代码的执行
一系列方法被调用的时候,由于js是单线程的,同一时间只会执行一个方法,于是这些方法就会被放到一个执行栈里面去。
那现在要实现那现在要实现js的非阻塞:关键在于事件队列机制的非阻塞:关键在于事件队列机制
js引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。当一个异步
事件返回结果后,js会将这个事件加入与当前执行栈不同的另一个队列,我们称之为事件队列。
被放入事件队列不会立刻执行其回调,而是等待当前执行栈中的所有任务都执行完毕, 主线程处于闲置状态时,主线程会去
查找事件队列是否有任务。


















weixin_38626858
- 粉丝: 2
- 资源: 898
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0