前端-事件循环

本文探讨了浏览器进程模型,涉及进程独立性、线程概念,重点讲解了渲染进程中的主线程如何通过事件循环处理异步任务,包括消息队列的优先级和为何单线程会导致异步。
摘要由CSDN通过智能技术生成

事件循环

游览器进程模型

程序运行的内存空间 为进程

每个进程相互独立,即使通讯,也需要双方同意

线程>?

运行代码的东西称之为线程
一个进程至少有一个线程,所以在进程开启后会自动创建一个线程,该线程称之为主线程.
主线程结束主程序就结束了,一个进程可以包含多个线程

游览器是一个多进程多线程的应用程序

1游览器进程 标签页的样式 后退前进刷新 用户交互,多个线程
2网络进程 负责加载网络
3渲染进程
渲染进程启动后,会开启一个渲染主线程,主线程负责执行 html css js 代码,为每个标签页 开一个新的渲染进程,保证不同标签页之间不互相影响

渲染主线程是如何工作的?

解析html css 计算样式 布局 处理图层 每秒把页面画60次 执行全局计算代码 执行事件处理函数 执行计时器的回调函数
渲染主线程 处理问题:排队
消息队列 事件队列 依次执行
1最开始渲染主线程会进入一个无限循环
2每次循环拿到下一个任务从消息队列里去拿,没有任务休眠
3其他线程可以随时向消息队列添加任务
整个过程称为 事件循环 消息循环

若干解释

何为异步?

代码执行过程中,无法立即执行的任务
定时器 setTimeout setInteval
网络通讯 XHR Fetch
用户操作 addEventListener
如果渲染主线程等待这些任务的时机到达,导致主线程长期处于阻塞 导致游览器[卡死]
渲染主线程无论如何不能阻塞

任务有优先级?

消息队列有优先级
谷歌游览器chrome
延时队列 中
交互队列 高
微队列 最高
在这里插入图片描述
结果 5 4 3 1 2
在这里插入图片描述
5 1 2 3

单线程是异步产生的原因 时间循环是异步的实现方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值