JavaScript中的宏任务和微任务详情
目录
- 1、微任务有哪些
- 2、宏任务有哪些
- 3、案例
- 3.1 结论
- 4、代码案例
- 4.1 代码分析
- 4.2 结论和运用的场景
1、微任务有哪些
Promise
await
和async
2、宏任务有哪些
setTimeout
setInterval
DOM
事件AJAX
请求
3、案例
我们发现打印的顺序是
1-4-3-2
为什么是这样的顺序?
先打印1-4这肯定是没有问题的
为啥先打印3然后才是2
因为3是
Promise
,Promise
是微任务。2是
setTimeout
,它是宏任务微任务的执行时机比宏任务早。
所以先执行的是3然后才是2
文章图片
3.1 结论
- 先同步后异步,先微后宏
- 微任务的执行时机比宏任务早哈~
4、代码案例
4.1 代码分析
上面这一段代码的执行分析:
肯定是先执行
1-4
然后根据先微任务后宏任务
就是输出3然后弹出3
然后就是说输出2然后弹出
setTimeout2
【错误的】因为微任务和宏任务之间还有一个
DOM
渲染【JavaScript中的宏任务和微任务详情】所以然后是
dom
渲染,最后才是宏任务所以输出
1-4
后,执行的是DOM
渲染。然后才是输出2然后弹出
setTimeout2
4.2 结论和运用的场景
微任务》DOM渲染》宏任务 看下面的例子
这个结论的运用场景
我们都做过echarts.我们知道渲染echarts的时候。
需要页面的DOM渲染完毕后,才能拿到节点进行渲染。
所以有的小伙伴会请请求的时机放在monuted()这个生命周期中
这样就可以确保返回来的数据肯定能够正常渲染在页面上。
其实根据上面这个结论。
你完全可以在created中去请求数据。返回来的的时候。
DOM肯定渲染完了。因为请求是宏任务。
宏任务的执行时机是在DOM渲染后的哈
到此这篇关于
JavaScript
中的宏任务和微任务详情的文章就介绍到这了,更多相关JavaScript
中的宏任务和微任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 事件代理
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗