Js执行机制——同步和异步
JS是单线程
JavaScript 语言的一大特点就是单线程,同一个时间只能做一件事。JavaScript 是为处理页面中用户的交互,以及操作DOM 而诞生的,比如我们对某个DOM元素进行添加和删除操作,不能同时进行,应该先添加,后删除。
单线程意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题结果:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。
同步和异步
同步:单线程,同步任务都在主线程上执行。
异步:多线程,异步任务是通过回调函数实现的,异步任务添加到任务队列中执行。
它们的执行顺序不同。
异步任务一般有三类:
- 普通事件 click、resize
- 资源加载 load、error
- 定时器 setInterval、setTimeout
JS执行机制
- 先执行主线程上的同步任务
- 异步任务(回调函数)放入任务队列中
- 一旦主线程同步任务执行完毕后,系统会按次序读取任务队列中的异步任务(回调函数),进入主线程执行栈,开始执行。
由于主线程不断的重复获得任务,执行任务,再获取任务、再执行,所以这种机制称为事件循环
Js执行机制——同步和异步相关推荐
- 【JavaScript】JS执行机制--同步与异步
目录 单线程 同步与异步 事件循环 单线程 JavaScript语言具有单线程的特点,同一个时间只能做一件事情.这是因为JavaScript脚本语言是为了处理页面中用户的交互,以及操作DOM而诞生的. ...
- 【JavaScript】JS执行机制微任务和宏任务
文章目录 一.了解JS执行机制 二. 异步任务(宏任务.微任务) 1.宏任务 2.微任务 三.实操演练 解析: 一.了解JS执行机制 在学习 promise(期约) 之前,我们需要了解JS的执行机制, ...
- 同步异步、JS执行机制、事件循环
文章目录 单线程 同步 异步 同步任务 异步任务 JS执行机制 异步进程处理 事件循环-event loop(这里主要是说浏览器事件循环) 单线程 JS的一大特点就是单线程,也就是同一时间内只能做一件 ...
- JS执行机制、同步和异步、宏观任务和微观任务
1. JS 是单线程 JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事. 这是因为 Javascript 这门脚本语言诞生的使命所致--JavaScript 是为处理页 ...
- 浏览器交响曲 (一)浏览器中的js执行机制
浏览器的工作原理 浏览器中的js执行机制 单线程的含义 同步.异步 完了吗?事情并非如此 所以执行的机制是怎样的?(宏任务.微任务) 个人理解: 希望过路大佬不吝赐教 浏览器中的js执行机制 今天在网 ...
- JavaScript中BOM简介及其对象、js执行机制
目录 BOM简介 什么是BOM DOM和BOM的区别 BOM的构成 Window对象的常见事件 窗口加载事件 调整窗口大小事件 定时器函数 setTimeout( )定时器 停止setTimeout( ...
- JavaScript系列之JS执行机制
文章の目录 1.JS是单线程 2.一个问题 3.同步和异步 3.1.同步 3.2.异步 3.3.同步和异步的本质区别 3.4.同步任务 3.5.异步任务 4.JS执行机制 5.示例 6.事件循环 7. ...
- JS 执行机制 详解(附图)
一.JS是单线程 JS语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.这是JS这门脚本语言诞生的使命所致--用来处理页面中用户的交互,以及操作DOM而诞生的. 单线程就意味着,所有任务需要 ...
- 理解js中的同步和异步
首先要先了解下js单线程 一.为什么js是单线程? 其实,JavaScript的单线程,与它的用途是有很大关系,我们都知道,JavaScript作为浏览器的脚本语言,主要用来实现与用户的交互,利用Ja ...
最新文章
- SAP MM PIR里的Lower Limit Upper Limit
- 官宣:程序员被纳入新生代农民工!
- 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )
- Java 向上类型转换与向下类型转换的理解【复习】
- PHPCMS v9设置文章的审核功能
- centos 删除crontab_centos7 定时任务crontab命令详解
- python通过hive transform处理数据
- php用session制作网站仿恶意刷新计数器
- Python案例:破译爬虫项目实践活动日期密码
- python中or的用法_解析python中and与or用法
- Codeforces Round #580 (Div. 1)(CF1205)A-E
- 微信小程序(第二章)- 开发工具的下载和安装
- forEach终止循环
- 五大方法 永久彻底关闭WIN10系统自动更新【已验证有效】
- 用Python发一个高逼格的朋友圈【附代码】
- 基于matlab的齿轮,基于matlab的故障齿轮分析.doc
- 分享一个简单好用的快递查询、物流管理软件
- HEVC预测块(PU)模式划分显示
- 手机芯片的AP、BP和CP
- 常见的关系型数据库和非关系型数据及其区别
热门文章
- [DB2]DB2中的数值类型
- ArcGIS Server 9.3 beta 体验三 -- 简阅 ADF 框架
- UVA280 LA5588 Vertex【DFS】
- HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】(废除!!!)
- 优先队列(priority queue)的实现(java,jdk接口)
- 字符串算法 —— 两字符串相同的单词
- 伪随机数与采样(sampling)
- 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
- 生活中的英语 —— 动植物篇
- 3C(Computer、Communication、Consumer Electronic)