线程机制与事件机制

线程机制与事件机制

浏览器内核模块组成

  • 主线程
    • js引擎模块:负责js程序的编译与运行
    • html,css文档解析模块:负责页面文本的解析
    • DOM/CSS模块:负责dom/css在内存中相关处理
    • 布局和渲染模块:负责页面的布局和效果的绘制(内存中的对象)
  • 分线程
    • 定时器模块:负责定时器的管理
    • DOM事件模块:负责事件的管理
    • 网络请求模块: 负责Ajax请求

js线程

  • js是单线程执行的(回调函数也是在主线程)
  • H5提出了实现多线程的方案:Web Workers
  • 只能是主线程更新界面

定时器问题:

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

事件处理机制

  • 代码分类
    • 初始化执行代码:包含绑定dom事件监听,设置定时器,发送ajax请求的代码
    • 回调执行代码:处理回调逻辑
  • js引擎执行代码的基本流程:
    • 初始化代码===> 回调代码
  • 模型的2个重要组成部分
    • 事件管理模块
    • 回调队列
  • 模型的运转流程
    • 执行初始化代码,将事件回调函数交给对应模块管理
    • 当事件发生时,管理模块会将回调函数及其数据添加到回调队列中
    • 只有当初始化代码执行完后(可能要一定时间),才会遍历读取回调队列中的回调函数执行

H5 Web Workers

  • 可以让js在分线程执行
  • Worker
    var worker = new Worker('worker.js')
    worker.onMessage = function(event){event.data}  // 用来接收另一个线程发送过来的数据的回调
    worker.postMessage(data1)   // 向另一个线程发送数据
    
  • 问题:
    • worker内代码不能操作DOM更新UI
    • 不是每个浏览器都支持这个新特性
    • 不能跨域加载JS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值