- 1
- 2
- 3
- 4
- 5
JavaScript的单线程事件循环模型
资料介绍
一、核心概念:为什么JavaScript是单线程
JavaScript作为浏览器端的脚本语言,设计之初就确定了单线程的核心特性,这一设计是由它的应用场景决定的:JavaScript的主要用途是和用户交互、操作DOM,如果设计为多线程,就会带来复杂的线程同步问题——比如两个线程同时修改同一个DOM,一个删除、一个添加内容,浏览器无法判断应该以哪个线程的操作结果为准。因此从诞生起,JavaScript就一直保持单线程的设计,同一时间只能执行一段代码。
单线程并不代表单线程会阻塞进程,如果所有任务都排队等待执行,那么一旦前面的任务执行时间很长,后续任务就会一直卡顿,用户体验会极差。为了解决这个问题,JavaScript设计了事件循环模型(Event Loop),用来处理异步任务,实现不阻塞主线程的并发效果。
二、事件循环的基本组成
JavaScript的事件循环模型核心分为四个部分:调用栈(Call Stack)、任务队列(Task Queue)、宏任务(Macro Task)、微任务(Micro Task)。
1. 调用栈
调用栈是JavaScript的执行上下文栈,遵循**后进先出(LIFO)**的规则,所有同步任务都会进入调用栈依次执行,当一个函数执行完成,就会从调用栈中弹出,直到调用栈被清空。
2. 任务队列
当遇到异步任务时,JavaScript并不会阻塞主线程等待异步结果返回,而是会把异步任务移交给浏览器内核的对应模块处理,当异步任务满足触发条件(比如定时器到时间、Ajax请求返回结果、用户点击事件触发),就会把对应的回调函数放入任务队列,等待主线程调用栈清空后,再取出执行。
任务队列并不是一个统一的队列,现代JavaScript规范把任务队列分为两类:宏任务队列和微任务队列,不同类型的异步任务会进入不同的队列,执行优先级也有区别。
部分文件列表
| 文件名 | 大小 |
| JavaScript的单线程事件循环模型.docx | 16K |
最新上传
-
lanmukk 打赏60.00元 3天前
-
lanmukk 打赏10.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:江岚
-
21ic下载 打赏310.00元 3天前
用户:mulanhk
-
21ic下载 打赏310.00元 3天前
用户:潇潇江南
-
21ic下载 打赏210.00元 3天前
用户:小猫做电路
-
21ic下载 打赏210.00元 3天前
用户:gsy幸运
-
21ic下载 打赏210.00元 3天前
用户:zhengdai
-
21ic下载 打赏140.00元 3天前
用户:jh0355
-
21ic下载 打赏130.00元 3天前
用户:jh03551
-
21ic下载 打赏60.00元 3天前
用户:lanmukk
-
21ic下载 打赏60.00元 3天前
用户:kkkopj
-
21ic下载 打赏70.00元 3天前
用户:cooldog123pp
-
21ic下载 打赏20.00元 3天前
用户:烟雨
-
21ic下载 打赏20.00元 3天前
用户:xuzhen1
-
21ic下载 打赏20.00元 3天前
用户:sun2152
-
21ic下载 打赏20.00元 3天前
用户:w178191520
-
21ic下载 打赏15.00元 3天前
用户:w1966891335
-
21ic下载 打赏15.00元 3天前
用户:w993263495
-
21ic下载 打赏15.00元 3天前
用户:x15580286248
-
21ic下载 打赏15.00元 3天前
用户:liqiang9090
-
21ic下载 打赏15.00元 3天前
用户:kk1957135547
-
21ic下载 打赏5.00元 3天前
用户:创园船热情
-
21ic下载 打赏5.00元 3天前
用户:ytf4210
-
21ic下载 打赏10.00元 3天前
用户:有理想666
-
13806677280 打赏1.00元 3天前
-
21下载积分 打赏20.00元 3天前
用户:white工
-
Lzhf918@ 打赏10.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:mulanhk
-
21ic下载 打赏310.00元 3天前
用户:lanmukk
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏240.00元 3天前
用户:江岚
-
21ic下载 打赏240.00元 3天前
用户:潇潇江南
-
21ic下载 打赏210.00元 3天前
用户:gsy幸运
-
21ic下载 打赏70.00元 3天前
用户:小猫做电路
-
21ic下载 打赏120.00元 3天前
用户:jh0355
-
21ic下载 打赏110.00元 3天前
用户:jh03551
-
21ic下载 打赏70.00元 3天前
用户:liqiang9090
-
21ic下载 打赏45.00元 3天前
用户:有理想666




全部评论(0)