宏任务、微任务

宏任务:setTimeout,setInterval,DOM事件,AJAX请求

微任务:Promise,asyc/await

 

复制代码
 1 //主线程直接执行
 2 console.log('1');
 3 //丢到宏事件队列中
 4 setTimeout(function() {
 5     console.log('2');
 6     process.nextTick(function() {
 7         console.log('3');
 8     })
 9     new Promise(function(resolve) {
10         console.log('4');
11         resolve();
12     }).then(function() {
13         console.log('5')
14     })
15 })
16 //微事件1
17 process.nextTick(function() {
18     console.log('6');
19 })
20 //主线程直接执行
21 new Promise(function(resolve) {
22     console.log('7');
23     resolve();
24 }).then(function() {
25     //微事件2
26     console.log('8')
27 })
28 //丢到宏事件队列中
29 setTimeout(function() {
30     console.log('9');
31     process.nextTick(function() {
32         console.log('10');
33     })
34     new Promise(function(resolve) {
35         console.log('11');
36         resolve();
37     }).then(function() {
38         console.log('12')
39     })
40 })
复制代码

执行此代码后控制台依次输出1 7 6 8 2 4 3 5 9 11 10 12。JS是单线程执行的机制,执行主线程,然后在宏任务队列中取出一个宏任务执行,执行后继续执行此宏任务内部的微任务。等内部所有微任务执行完之后,再回到宏任务队列取出第二个宏任务,周而复始地执行下去。

本文部分内容转自https://www.cnblogs.com/wangziye/p/9566454.html

posted @   给我一个debug  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示