JS是单线程
JavaScript 语言的一大特点就是单线程,同一个时间只能做一件事。JavaScript 是为处理页面中用户的交互,以及操作DOM 而诞生的,比如我们对某个DOM元素进行添加和删除操作,不能同时进行,应该先添加,后删除。

单线程意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题结果:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

同步和异步

同步:单线程,同步任务都在主线程上执行。
异步:多线程,异步任务是通过回调函数实现的,异步任务添加到任务队列中执行。
它们的执行顺序不同。

异步任务一般有三类:

  • 普通事件 click、resize
  • 资源加载 load、error
  • 定时器 setInterval、setTimeout

JS执行机制

  • 先执行主线程上的同步任务
  • 异步任务(回调函数)放入任务队列中
  • 一旦主线程同步任务执行完毕后,系统会按次序读取任务队列中的异步任务(回调函数),进入主线程执行栈,开始执行。

由于主线程不断的重复获得任务,执行任务,再获取任务、再执行,所以这种机制称为事件循环

Js执行机制——同步和异步相关推荐

  1. 【JavaScript】JS执行机制--同步与异步

    目录 单线程 同步与异步 事件循环 单线程 JavaScript语言具有单线程的特点,同一个时间只能做一件事情.这是因为JavaScript脚本语言是为了处理页面中用户的交互,以及操作DOM而诞生的. ...

  2. 【JavaScript】JS执行机制微任务和宏任务

    文章目录 一.了解JS执行机制 二. 异步任务(宏任务.微任务) 1.宏任务 2.微任务 三.实操演练 解析: 一.了解JS执行机制 在学习 promise(期约) 之前,我们需要了解JS的执行机制, ...

  3. 同步异步、JS执行机制、事件循环

    文章目录 单线程 同步 异步 同步任务 异步任务 JS执行机制 异步进程处理 事件循环-event loop(这里主要是说浏览器事件循环) 单线程 JS的一大特点就是单线程,也就是同一时间内只能做一件 ...

  4. JS执行机制、同步和异步、宏观任务和微观任务

    1. JS 是单线程 JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事. 这是因为 Javascript 这门脚本语言诞生的使命所致--JavaScript 是为处理页 ...

  5. 浏览器交响曲 (一)浏览器中的js执行机制

    浏览器的工作原理 浏览器中的js执行机制 单线程的含义 同步.异步 完了吗?事情并非如此 所以执行的机制是怎样的?(宏任务.微任务) 个人理解: 希望过路大佬不吝赐教 浏览器中的js执行机制 今天在网 ...

  6. JavaScript中BOM简介及其对象、js执行机制

    目录 BOM简介 什么是BOM DOM和BOM的区别 BOM的构成 Window对象的常见事件 窗口加载事件 调整窗口大小事件 定时器函数 setTimeout( )定时器 停止setTimeout( ...

  7. JavaScript系列之JS执行机制

    文章の目录 1.JS是单线程 2.一个问题 3.同步和异步 3.1.同步 3.2.异步 3.3.同步和异步的本质区别 3.4.同步任务 3.5.异步任务 4.JS执行机制 5.示例 6.事件循环 7. ...

  8. JS 执行机制 详解(附图)

    一.JS是单线程 JS语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.这是JS这门脚本语言诞生的使命所致--用来处理页面中用户的交互,以及操作DOM而诞生的. 单线程就意味着,所有任务需要 ...

  9. 理解js中的同步和异步

    首先要先了解下js单线程 一.为什么js是单线程? 其实,JavaScript的单线程,与它的用途是有很大关系,我们都知道,JavaScript作为浏览器的脚本语言,主要用来实现与用户的交互,利用Ja ...

最新文章

  1. SAP MM PIR里的Lower Limit Upper Limit
  2. 官宣:程序员被纳入新生代农民工!
  3. 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )
  4. Java 向上类型转换与向下类型转换的理解【复习】
  5. PHPCMS v9设置文章的审核功能
  6. centos 删除crontab_centos7 定时任务crontab命令详解
  7. python通过hive transform处理数据
  8. php用session制作网站仿恶意刷新计数器
  9. Python案例:破译爬虫项目实践活动日期密码
  10. python中or的用法_解析python中and与or用法
  11. Codeforces Round #580 (Div. 1)(CF1205)A-E
  12. 微信小程序(第二章)- 开发工具的下载和安装
  13. forEach终止循环
  14. 五大方法 永久彻底关闭WIN10系统自动更新【已验证有效】
  15. 用Python发一个高逼格的朋友圈【附代码】
  16. 基于matlab的齿轮,基于matlab的故障齿轮分析.doc
  17. 分享一个简单好用的快递查询、物流管理软件
  18. HEVC预测块(PU)模式划分显示
  19. 手机芯片的AP、BP和CP
  20. 常见的关系型数据库和非关系型数据及其区别

热门文章

  1. [DB2]DB2中的数值类型
  2. ArcGIS Server 9.3 beta 体验三 -- 简阅 ADF 框架
  3. UVA280 LA5588 Vertex【DFS】
  4. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】(废除!!!)
  5. 优先队列(priority queue)的实现(java,jdk接口)
  6. 字符串算法 —— 两字符串相同的单词
  7. 伪随机数与采样(sampling)
  8. 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
  9. 生活中的英语 —— 动植物篇
  10. 3C(Computer、Communication、Consumer Electronic)