文章目录

  • 前话
  • 宏任务和微任务包括哪些
  • 执行流程图
  • 易错例题
  • 引例

前话

  • 任务队列中的异步任务分为:宏任务 和 微任务
  • 宏任务和微任务都是异步任务,都在任务队列中,但是它们在不同的队列中
  • *重点:在准备取出每个宏任务准备执行前要执行完所有的微任务

宏任务和微任务包括哪些

  • 宏任务

      1. setTimeout
      1. setInterval
      1. I/O
      1. 事件
      1. postMessage
      1. setImmediate (node中的特性,浏览器已经废弃该API)
      1. requestAnimationFrame
      1. UI渲染
  • 微任务

      1. Promise.then
      1. MutationObserver
      1. process.nextTick (node中)

执行流程图

易错例题

console.log('开始')new Promise((resolve, reject) => {console.log(1)resolve()
}).then(() => {console.log(2)return new Promise((resolve, reject) => {  // 在这里返回promise,则第一个promise的第二个then方法会置于这个promise的then方法之后,所有先输出 【4】,再输出 【5】console.log(3)resolve()}).then(() => {console.log(4)})
}).then(() => {console.log(5)
})console.log('结束')  
  • 上述的代码中会依次输出:开始 1 结束 2 3 4 5
  • 首先输出开始,接着是一个promise构造函数,执行执行器函数,输出 【1】
  • 继续执行同步代码,输出 【结束】
  • 同步代码全部执行完毕,然后执行任务队列中的逻辑,输出 【2】和 【3】

引例

console.log('开始')setTimeout(() => {console.log('定时器执行')
}, 0);new Promise((resolve, reject) => {resolve('佩奇')
}).then((data)=>{console.log(data)
})console.log('结束')// 依次输出:开始 结束 佩奇 定时器执行
  • *重点:在准备取出每个宏任务准备执行前要执行完所有的微任务

JS之宏任务与微任务相关推荐

  1. js的宏任务和微任务

    js是单线程的,同一时刻只能干一件事 异步代码会放到任务队列 任务队列分为宏任务和微任务 微任务优先于宏任务执行 promise放在微任务队列中 setTimeout(() => {consol ...

  2. JS面试——宏任务与微任务

    JavaScript的宏任务与微任务 1.问题的由来 2.JavaScript的宏任务与微任务 2.1promise的使用方法 2.2async与await的使用方法 3.面试题实战分析--程序执行顺 ...

  3. 辉太郎看前端(js异步宏任务和微任务)

    前言 宏任务:setTimeout,setInterval,Ajax,DOM事件 微任务:Promise,async/await. 优先级:微任务执行要比宏任务要早. 注: 同步任务会和微任务按照出场 ...

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

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

  5. js中的事件循环和宏任务和微任务的理解

    参考许多大神的文章,写下自己的理解 事件循环: 说到事件循环就得谈到js中同步和异步的执行顺序 1.javascript将任务分为同步任务和异步任务,同步任务放到主线中,异步函数首先进行回调函数注册. ...

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

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

  7. ❤️一起谈一谈js中的宏任务和微任务!

    前面面试的文章中我们说过一道关于宏任务和微任务的题: setTimeout(function(){console.log('1') });new Promise(function(resolve){c ...

  8. js 中的 Event Loop 以及 宏任务 与 微任务

    目录 前言 1.JS 的 执行引擎 与 执行环境 2.js 是单线程的 一.事件循环(Event Loop) 二.任务队列 三.宏任务 与 微任务 1.宏任务 2.微任务 3.宏任务与微任务的运行机制 ...

  9. 一篇文章理解JS中同步任务和异步任务以及宏任务与微任务的原理和执行机制

    前言: javascript是一种单线程编程语言, 一般来说它的执行顺序是按照从上到下执行,但是有些特殊情况则会改变这样的执行顺序,我们需要理解和掌握其中的原理,需要了解同步任务和异步任务以及宏任务和 ...

最新文章

  1. 软件开发--深入理解程序的结构
  2. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》
  3. python--复习之路的目录
  4. linux path环境变量检索目录,Linux下动态链接库加载路径及搜索路径问题
  5. 两个onCreate方法?你真的了解onCreate()么?
  6. 【洛谷 P3194】 [HNOI2008]水平可见直线 (单调栈)
  7. 企业微信加密消息体_用企业微信小程序发送消息
  8. 云图说|云上攻击早知道,少不了这个“秘密武器”!
  9. 拒绝假货!LVMH与普拉达、卡地亚联手推出区块链平台AURA
  10. 诺宝机器人编程入门教程_(完整)VEX 机器人软件编程教程
  11. AOP切面用aspectjweaver.jar实现代码
  12. 深信服AC1100上网行为管理
  13. 新型城镇化红利,碧桂园的确定性在哪里?
  14. Ansys最新报告找到阻碍仿真效率提升“元凶”,竟然是……
  15. 今日“春分”,我們來場春天的“飛花令”吧
  16. ImageMagick将多张图片拼接成一张图片_批量裁剪图片、拼接长图、添加水印不想打开ps,你可以试试这款软件...
  17. 使用nprobe+ntopng监控上百个路由器流量
  18. ScannerException: while scanning for the next token found character ‘@‘ 问题解决
  19. Incorrect string value: '\xE7\xB3\xBB\xE7\xBB\x9F...' for column '字段名' at row 1,插入中文时...
  20. 我做了一个Python Bot,可以解决任何给定图像中的多项选择问题。 码]

热门文章

  1. 新浪微博OAuth2.0授权及使用python调用微博API
  2. H.264/H265的NAL解析
  3. 软件不兼容android5.1.1,Android 解决OPPO 5.1 浮窗权限不兼容问题
  4. python三种基本数据类型有哪些_python中基本数据类型有哪些
  5. 美国爸爸和中国爸爸的区别
  6. 随笔-春天来了,又到了换工作的时候
  7. 写一篇过往与憧憬:致程序员
  8. linux sudo版本查询,如何查看linux版本
  9. 华为od统一考试B卷【字符串排序】C++实现
  10. 一个简单的自托管图片库HomeGallery