前端基础知识总结---JS高级篇(4)_线程机制与事件机制

1. 线程与进程

1). 进程:

程序的一次执行, 它占有一片独有的内存空间
可以通过windows任务管理器查看进程

2). 线程:

是进程内的一个独立执行单元
是程序执行的一个完整流程
是CPU的最小的调度单元

3). 关系

一个进程至少有一个线程(主)
程序是在某个进程中的某个线程执行的

2. 浏览器内核模块组成

1). 主线程

js引擎模块 : 负责js程序的编译与运行
html,css文档解析模块 : 负责页面文本的解析
DOM/CSS模块 : 负责dom/css在内存中的相关处理 
布局和渲染模块 : 负责页面的布局和效果的绘制(内存中的对象)

2). 分线程

定时器模块 : 负责定时器的管理
事件响应模块 : 负责事件的管理
网络请求模块 : 负责Ajax请求

3). js线程

js是单线程执行的(回调函数也是在主线程)
H5提出了实现多线程的方案: Web Workers   --->var worker = new Worker('./work.js');
只能是主线程更新界面

3. 定时器问题:

定时器并不真正完全定时
如果在主线程执行了一个长时间的操作, 可能导致延时才处理

4. 事件循环机制

img

1). 代码分类

初始化执行代码: 包含绑定dom事件监听, 设置定时器, 发送ajax请求的代码
回调执行代码: 处理回调逻辑

2). js引擎执行代码的基本流程:

初始化代码===>回调代码

3). 模型的2个重要组成部分:

事件管理模块
回调队列 (callback queue)

4). 模型的运转流程

执行初始化代码, 将事件回调函数交给对应模块管理
当事件发生时, 管理模块会将回调函数及其数据添加到回调列队中

调函数交给对应模块管理
当事件发生时, 管理模块会将回调函数及其数据添加到回调列队中
只有当初始化代码执行完后(可能要一定时间), 才会遍历读取回调队列中的回调函数执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智者_若愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值