当前位置:网站首页>js单线程及事件循环、宏任务和微任务
js单线程及事件循环、宏任务和微任务
2022-08-03 13:11:00 【weixin_46051260】
为什么js是单线程
javascript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。
javascript的单线程与其用途有关,作为浏览器的脚本语言,javascript主要用途是与用户互动,
以及操作dom,这就决定了他只能是单线程,否则会带来很复杂的同步问题。
比如,假定javascript同时有两个线程,一个线程在某个Dom节点上添加内容,另一个线程
删除了这个节点,这时浏览器应该以哪个线程为准?
所以,为了避免复杂性,从一诞生,javascript就是单线程,这已经成了这门语言的核心特征,
将来也不会改变
事件循环机制
消息队列::消息队列是一个先进先出的队列,他里边存放着各种信息
事件循环:事件循环是指主线程重复从消息队列中取消息、执行的过程
实际上,主线程只会做一件事情,就是从消息队列里面取消息、执行消息,再取消息、再执行。
当消息队列为空时,就会直到消息队列变成非空,而且主线程只有将当前的消息执行完成后,
才会去取下一个消息。这种机制就叫做事件循环机制,取一个消息并执行的过程叫做依次循环。
上图大致描述就是:
- 主线程运行时会产生执行栈,栈中的代码调用某些api时,他们会在事件队列中加各种事件(当满足触发条件后,执行)
- 而栈中的代码执行完毕,就会读取事件队列中的事件,去执行那些回调
- 如此循环
注意,总是要等待栈中的代码执行完毕后才会读取事件队列中的事件
事件队列中的宏任务与微任务
执行流程:
宏任务执行之前,要保证所有微任务是清空的,宏任务1执行完,执行下一个宏任务2,但是该宏任务2里要是有微任务,则执行完微任务,再去执行该宏任务2,以此类推
边栏推荐
- An动画基础之元件的影片剪辑动画与传统补间
- An动画基础之元件的图形动画与按钮动画
- An动画基础之按钮动画与基础代码相结合
- 滑动窗口的最大值
- Heaps
- Real number rounding and writing to file (C language file)
- Notepad++ install jsonview plugin
- [Practical skills] APP video tutorial for updating APP in CANFD, I2C, SPI and serial port mode of single-chip bootloader (2022-08-01)
- 如何让history历史记录前带时间戳
- 北斗三号系统建成开通两周年:基础设施端核心技术已实现自主可控
猜你喜欢
An introduction to the camera
An animation optimization of traditional guide layer animation
ECCV 2022|通往数据高效的Transformer目标检测器
An基本工具介绍之选择线条工具(包教会)
升级农企业务运营建设,智慧供应链管理平台打造“共赢生态链”
【OpenCV】 级联分类器训练模型
可视化图表设计Cookbook
An animation based button animation combined with basic code
硬件业务收入下滑,为了赚钱,苹果暧昧对待流氓软件和增加广告了
冷链行业商业供应链系统:实现全流程数字化协同,激活企业迸发市场活力
随机推荐
Jmeter use
Nanoprobes FluoroNanogold 偶联物的特色和应用
来广州找工作有一个多月了,今天终于有着落了,工资7000
Real number rounding and writing to file (C language file)
安全狗《云原生安全威胁分析报告》首次提出双检测模型
Golang GMP principle
Postman插件下载
Insertion or Heap Sort
有哪些好用的IT资产管理平台?
In order to counteract the drop in sales and explore the low-end market, Weilai's new brand products are priced as low as 100,000?
An工具介绍之3D工具
An工具介绍之摄像头
An animation based button animation combined with basic code
短视频的头号玩家:抖音产品体验报告
“芯片法案”通过后,美光承诺在美国扩产
Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
如何让history历史记录前带时间戳
【OpenCV】 级联分类器训练模型
滑动窗口的最大值
An动画基础之元件的图形动画与按钮动画