前端-事件循环

事件循环

游览器进程模型

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

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

线程>?

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

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

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

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

相关推荐

  1. js之事件循环

    2024-02-22 16:02:01       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-22 16:02:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-22 16:02:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-22 16:02:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-22 16:02:01       20 阅读

热门阅读

  1. python opencv图像模糊

    2024-02-22 16:02:01       29 阅读
  2. ThreadLocal内存如何释放

    2024-02-22 16:02:01       35 阅读
  3. excel合并多列单元格并保留数据

    2024-02-22 16:02:01       34 阅读
  4. 数据库三范式

    2024-02-22 16:02:01       33 阅读
  5. 项目总结(ALL)

    2024-02-22 16:02:01       37 阅读
  6. Rust 安装

    2024-02-22 16:02:01       29 阅读
  7. IP分片重组功能的模拟实现

    2024-02-22 16:02:01       30 阅读
  8. 题目 1032: [编程入门]自定义函数之字符串连接

    2024-02-22 16:02:01       28 阅读