JavaScript中的宏任务和微任务详情


Posted in Javascript onNovember 27, 2021

1、微任务有哪些

Promise

awaitasync

2、宏任务有哪些

setTimeout

setInterval

  • DOM事件
  • AJAX请求

3、案例

<script>

console.log(1)

setTimeout(()=>{

    console.log("2")

},0)

Promise.resolve().then(()=>{

    console.log('3')

})

console.log(4)

</script>

我们发现打印的顺序是1-4-3-2

为什么是这样的顺序?

先打印1-4这肯定是没有问题的

为啥先打印3然后才是2

因为3是Promise,Promise是微任务。

2是setTimeout,它是宏任务

微任务的执行时机比宏任务早。

所以先执行的是3然后才是2

JavaScript中的宏任务和微任务详情

3.1 结论

  • 先同步后异步,先微后宏
  • 微任务的执行时机比宏任务早哈~

4、代码案例

<body>

    <div id="app"></div>

<script>

// 这一段是dom渲染的

let app=document.getElementById("app")

let cont='<p>我是p标签</p>'

app.append(cont)

// dom渲染结束



console.log(1)

setTimeout(()=>{

    console.log("2")

    alert('setTimeout2')

},0)

Promise.resolve().then(()=>{

    console.log('3')

    alert('3')

})

console.log(4)

</script>

</body>

4.1 代码分析

上面这一段代码的执行分析:

肯定是先执行1-4

然后根据先微任务后宏任务

就是输出3然后弹出3

然后就是说输出2然后弹出setTimeout2 【错误的】

因为微任务和宏任务之间还有一个DOM渲染

所以然后是dom渲染,最后才是宏任务

所以输出1-4后,执行的是DOM渲染。

然后才是输出2然后弹出setTimeout2

4.2 结论和运用的场景

微任务》DOM渲染》宏任务 看下面的例子

这个结论的运用场景

我们都做过echarts.我们知道渲染echarts的时候。

需要页面的DOM渲染完毕后,才能拿到节点进行渲染。

所以有的小伙伴会请请求的时机放在monuted()这个生命周期中

这样就可以确保返回来的数据肯定能够正常渲染在页面上。

其实根据上面这个结论。

你完全可以在created中去请求数据。返回来的的时候。

DOM肯定渲染完了。因为请求是宏任务。

宏任务的执行时机是在DOM渲染后的哈

到此这篇关于JavaScript中的宏任务和微任务详情的文章就介绍到这了,更多相关JavaScript中的宏任务和微任务内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
原生JS实现不断变化的标签
May 22 Javascript
Bootstrap按钮组实例详解
Jul 03 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
vue实现行列转换的一种方法
Aug 06 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
layui使用templet格式化表格数据的方法
Sep 16 Javascript
vue实现select下拉显示隐藏功能
Sep 30 Javascript
前端监听websocket消息并实时弹出(实例代码)
Vue实现跑马灯样式文字横向滚动
Nov 23 #Vue.js
利用js实现简单开关灯代码
Nov 23 #Javascript
详解Vue的列表渲染
Nov 20 #Vue.js
详解JS数组方法
Nov 20 #Javascript
详解Vue slot插槽
Nov 20 #Vue.js
详解Vue router路由
Nov 20 #Vue.js
You might like
其他功能
2006/10/09 PHP
解析php常用image图像函数集
2013/06/24 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
python读写文件操作示例程序
2013/12/02 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
Python关于反射的实例代码分享
2020/02/20 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
2014年会演讲稿范文
2014/01/06 职场文书
房屋改造计划书
2014/01/10 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
大学生实习证明范本
2014/09/19 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
Python基础之元编程知识总结
2021/05/23 Python