什么是宏任务和微任务

宏任务包括:setTimeout setInterval Ajax DOM事件 微任务:Promise async/await
微任务比宏任务的执行时间要早

异步和单线程


异步和单线程是相辅相成的,js是一门单线程脚本语言,所以需要异步来辅助

异步和同步的区别:

  1. 异步不会阻塞程序的执行,
  2. 同步会阻塞程序的执行

前端使用异步的场景:

  1. 定时任务:setTimeout,setInverval
  2. 网络请求:ajax请求,动态加载
  3. 事件绑定

任务列队和event loop(事件循环)

1)所有的同步任务都在主线程上执行,行成一个执行栈。

2)除了主线程之外,还存在一个任务列队,只要异步任务有了运行结果,就在任务列队中植入一个时间标记。

3)主线程完成所有任务(执行栈清空),就会读取任务列队,先执行微任务队列在执行宏任务队列。

只要主线程空了,就会读取任务列队,这就是js的运行机制,也被称为 event loop(事件循环)。

执行顺序

1.主线程上宏任务、微任务执行顺序
执行顺序:主线程 >> 主线程上创建的微任务 >> 主线程上创建的宏任务
宏任务中包含微任务
执行顺序:主线程 >> 主线程上的宏任务队列1 >> 宏任务队列1中创建的微任务

js单线程,事件循环,微任务宏任务相关推荐

  1. 工作流 节点子线程_节点JS体系结构–单线程事件循环

    工作流 节点子线程 Today we will look into Node JS Architecture and Single Threaded Event Loop model. In our ...

  2. html5多线程例子,javascript的单线程事件循环及多线程介绍

    前言 其实我前面文章对于改变js的执行顺序及多线程都有相关介绍!例如,我们可以用setTimeout(fn,0)改变代码执行循序,文章最后也提及了Event Loop(事件循环).同时,js的Work ...

  3. 事件循环中的宏任务和微任务执行顺序

    事件循环中的宏任务和微任务执行顺序 先来了解一下事件循环.宏任务.微任务和Promise 1.事件循环(Event Loop)运行机制 执行一个宏任务(栈中没有就从事件队列中获取) 执行过程中如果遇到 ...

  4. 原生js循环展示dom_【前端面试】用一道题讲 js 的事件循环队列

    昨天去面了滴滴,一口气面了三面,考了 promise 和事件循环.之前的猿辅导也考察了这些,几乎所有的大厂中厂都一定会考原生 js 的事件循环队列. 今天,我把昨天考察的原题拿出来分析一下. setT ...

  5. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

  6. js的事件循环机制,同步和异步,以及宏任务与微任务的执行顺序

    前置知识点(重要): 1.什么是事件循环:js是单线程语言,同个时间执行一件事(同步),但是他可以有一个异步队列,遇到异步操作(比如说ajax这种阻塞时间很久的事情)把它们先放入异步队列,并且继续往下 ...

  7. JS事件循环中的宏任务和微任务执行顺序

    1. 宏任务和微任务事件 其中微任务的优先级高于宏任务,括号内为事件运行环境 宏任务 微任务 I/O事件/onClick点击事件 process.netTick (Node) setTimeout N ...

  8. js三座大山之异步-微任务宏任务区别

    1.微任务指Promise.async/await.宏任务指setTimeout\setInterval\ajax\dom事件. js三座大山之异步-eventloop​​​​​​​ 2.基于even ...

  9. 阿里一面:熟悉事件循环?那谈谈为什么会分为宏任务和微任务。

    什么是事件循环 在了解事件循环前,需要一些有关JS特性的前置知识. JS引擎是单线程的,直白来说就是一个时间点下JS引擎只能去做一件事情,而Java这种多线程语言,可以同时做几件事情. JS做的任务分 ...

  10. js---对事件循环宏任务和微任务的理解

    一.JS特点 Js作为一门单线程语言,即一次只能完成一个任务,当有多个任务时,任务就得进行排队等待执行,只能等待自己的前一个任务执行完成后自己才能执行. 二.JS事件循环 要理解JS的事件循环的就必须 ...

最新文章

  1. 辍学的名人_我辍学去追求成为网络开发人员和设计师的梦想
  2. NLP命名实体识别(NER)代码实践
  3. python监听文件最后修改人_Python持续监听文件变化代码实例
  4. wxWidgets:wxNavigationEnabled< W >类模板的用法
  5. 单击GridView进入编辑模式
  6. CodeForces - 1484D Playlist(循环链表+bfs)
  7. linux usb声卡 submit urb,linux usb urb详解
  8. 测试Markdown
  9. POCO C++库导游【转】
  10. 应用机器学习(九):主成分分析
  11. 极客大学架构师训练营 秒杀 搜索引擎 爬虫 Lucene Elastic Search 第18课 听课总结
  12. php会议预约,会议预约系统-信息发布系统|多媒体信息发布系统|视展信息发布系统首页...
  13. 素数筛法详解-列出1-n中的素数
  14. 民生银行java 面试_2019民生银行招聘面试试题及答案解析
  15. 『杭电1206』劲乐团
  16. Either类java_在Java 8中有相当于Scala的Either吗?
  17. QoS实现交换机带宽控制
  18. python打印日历_python 打印日历
  19. ps计算机设置,做着ps电脑卡了怎么办 试试设置这四项
  20. 五款你没听过却很好用的优质软件,建议低调收藏

热门文章

  1. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4 主状态机详解
  2. IINA 1.1.0beta1中文版 - Mac最强万能视频播放器
  3. DIY个人智能家庭网关—— 路由器篇之刷机
  4. 数据安全态势感知运营中心的关键防御措施
  5. c语言逆值,C语言 n*n矩阵求值及求逆矩阵
  6. 中国渔业统计年鉴(1979-2022)
  7. 硬核的 Python 面试题!Python经典面试题总结
  8. graphicsmagick和imagemagick转gif到jpg
  9. GNSS说第(二)讲----加权最小二乘法(WLS)相关概念及基本步骤解析
  10. Java 笔记 # 一