ES6 规范中,宏任务(macrotask)又称为 task,微任务(microtask)又称为 jobs。

宏任务是由宿主发起的,而微任务是由 JS 本身发起。比如,宏任务有:setTimeOut、setInterval、文件操作等;微任务有:Promise.then、Promise.catch等。

微任务和宏任务的执行顺序:
每一个宏任务执行完之后,都会检查是否存在待执行的微任务
如果有,则执行完所有的微任务之后,再继续执行下一个宏任务

简单举例 :

setTimeOut(function() {console.log(1)
})new Promise(function(resolve, reject) {console.log(2)resolve()
}).then(function() {console.log(3)
})console.log(4)// 结果:2431

分析:
1.先执行所有的同步任务(执行第6行、第12行代码 )
2.再执行微任务(执行第9行代码 )
3.再执行下一个宏任务(执行第2行代码 )

宏任务和微任务的区别相关推荐

  1. 弄懂 JavaScript 执行机制,宏任务和微任务

    本文的目的就是要保证你彻底弄懂javascript的执行机制. 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出 ...

  2. 宏任务和微任务的详解

    微任务可以在实时性和效率之间做一个有效的权衡. 从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserver.Promise 以及以 Promise 为基础开发出来的 ...

  3. javascript事件循环Event Loop,宏任务与微任务

    1.javascript的运行机制介绍 javascript是单线程的语言,默认情况下一个时间点只能做一件事情,因此引入异步模型javascript是一门解释性脚本语言,即(边解释边运行) 2.阻塞式 ...

  4. 异步执行顺序——宏任务与微任务不同环境下的出队规则

    导读 javascript是一门单线程语言,一切javascript版的多线程都是用单线程模拟出来的,所以代码执行还是顺序执行的原则,只不过编写的顺序被执行环境重新"编排"了一下而 ...

  5. 宏事件、微事件、 JavaScript 执行机制

    案例预热: setTimeout(function(){console.log('定时器开始啦')});new Promise(function(resolve){console.log('马上执行f ...

  6. ajax是宏任务还是微任务,宏任务和微任务的一个小事

    本文首发于 vivo互联网技术 微信公众号 链接: 作者:Ivan 本文根据 JavaScript 规范入手,阐述了JS执行过程在考虑时效性和效率权衡中的演变,并通过从JS代码运行的基础机制事件队列入 ...

  7. ​易生信-宏基因组积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...

    博彩众家之长,积微成就突破.为促进我国宏基因组研究领域的学术交流和技术分享,推动微生物组领域的发展,"宏基因组"公众号联合国内外优秀人才组织"易生信-宏基因组 积微学术论 ...

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

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

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

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

最新文章

  1. mysql运维工资_MySQL运维踩坑
  2. Java调用PHP,跑PHP代码
  3. Flume Sinks官网剖析(博主推荐)
  4. 这个笑脸胡子的表情是什么:“<:] {%>”?
  5. 记mysqldump导出导入数据库的一个小问题~
  6. javascript关于检测浏览器和操作系统的问题
  7. Docker 网络命名空间
  8. 【springboot】application.yml配置文件中数据库密码password加密后显示
  9. (转)让我们原谅齐达内吧!(附一张落泪的照片)
  10. [HTML5]使用Box2dWeb模拟射箭效果并添加能量槽
  11. HDFS Archival Storage
  12. 手机计算机隐藏图标,怎么隐藏图标-隐藏小米手机桌面图标文字,只需一小段代码...
  13. 单网卡、单IP、双网关设置内外网同时访问
  14. Qt扫盲-QSystemTrayIcon理论总结
  15. 【历史上的今天】5 月 12 日:第一台可编程机电子计算机诞生;硅谷先驱出生;饭否上线
  16. YOLOv5 Head解耦
  17. C#记录程序运行时间记录显示
  18. 鲜花线上销售管理系统的设计与实现
  19. PrometheusAlert安装和其基本的使用
  20. npm 查看指定 package 的依赖关系

热门文章

  1. HDU 5113 Black And White(搜索+剪枝)
  2. 前端架构演进及主流UI
  3. 谷歌开发者工具设置语言
  4. FFmpeg入门详解之105:m3u8文件格式详解
  5. 多功能用途 Gooey Effects 7种炫酷HTML5 SVG液态水滴融合动画特效
  6. PHP对接新浪API动态生成短链接
  7. Java JTS点线面分析、线以及多边形合并、面积计算
  8. python学习笔记18:数据分析pandas和matplotlib
  9. Yarn 历史任务日志解释和配置
  10. 计算机双证在职研究生容易考吗?