IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> javascript 线程机制与事件机制 -> 正文阅读

[JavaScript知识库]javascript 线程机制与事件机制

1.浏览器内核

1.?什么是浏览器内核?

??*?支持浏览器运行的最核心的程序

2.?不同的浏览器可能不太一样

??*?Chrome,?Safari:?webkit

??*?firefox:?Gecko

??*?IE:?Trident

??*?360,搜狗等国内浏览器:?Trident?+?webkit

3.?内核由很多模块组成

??*?html,css文档解析模块?:?负责页面文本的解析

??*?dom/css模块?:?负责dom/css在内存中的相关处理

??*?布局和渲染模块?:?负责页面的布局和效果的绘制

??*?布局和渲染模块?:?负责页面的布局和效果的绘制

-------------

??*?定时器模块?:?负责定时器的管理

??*?网络请求模块?:?负责服务器请求(常规/Ajax)

??*?事件响应模块?:?负责事件的管理

?

2.定时器引发的思考

1.?定时器真是定时执行的吗?

??*?定时器并不能保证真正定时执行

??*?一般会延迟一丁点(可以接受),?也有可能延迟很长时间(不能接受)

2.?定时器回调函数是在分线程执行的吗?

??*?在主线程执行的,?js是单线程的

3.?定时器是如何实现的?

??*?事件循环模型

<script type="text/javascript">

  document.getElementById('btn').onclick = function () {
    var start = Date.now()
    console.log('启动定时器前...')
    setTimeout(function () {
      console.log('定时器执行了', Date.now()-start)
    }, 200)
    console.log('启动定时器后...')

    // 做一个长时间的工作
    for (var i = 0; i < 1000000000; i++) {

    }
  }
</script>

3.js是单线程的

????1.?如何证明js执行是单线程的?

????*?setTimeout()的回调函数是在主线程执行的

????*?定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行

????2.?为什么js要用单线程模式,?而不用多线程模式?

????*?JavaScript的单线程,与它的用途有关。

????*?作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。?这决定了它只能是单线程,否则会带来很复杂的同步问题

????3.?代码的分类:

????*?初始化代码

????*?回调代码

????4.?js引擎执行代码的基本流程:先初始化代码===>后回调代码

????*?先执行初始化代码:?包含一些特别的代码(同步代码):?包含绑定dom事件监听,?设置定时器,?发送ajax请求的代码, 后执行?回调执行代码{异步代码, 处理回调逻辑(异步执行,异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同)}

????*?设置定时器

????*?绑定事件监听

????*?发送ajax请求

????*?后面在某个时刻才会执行回调代码

??5.回调函数的理解

????*?什么函数才是回调函数?

????*?你定义的

????*?你没有调用

????*?但它最终执行了(在一定条件下或某个时刻)

? ?常用的回调函数:

????*?dom事件回调函数

????*?定时器回调函数

????*?ajax请求回调函数

????*?生命周期回调函数

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

??*?事件(定时器/DOM事件/Ajax)管理模块

??*?回调队列

7.?模型的运转流程

??*?执行初始化代码,?将事件回调函数交给对应模块管理

??*?当事件发生时,?管理模块会将回调函数及其数据添加到回调列队中

??*?只有当初始化代码执行完后(可能要一定时间),?才会遍历读取回调队列中的回调函数执行

?

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:34:41  更:2021-08-23 16:35:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:01:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码