1.代码开始执行,遇到console.log(1) ,打印 1
2.代码继续执行,遇到setTimeout,此为异步任务,交给异步处理模块,因为没有延迟时间,所以console.log(2)很快加入到了宏任务队列中
3.代码继续执行,遇到console.log(3),打印 3
4.代码继续执行,遇到then函数,此为异步任务,交给异步处理模块,因为promise马上就resolve,所以console.log(4)很快加入到了微任务队列中
5.代码继续执行,遇到遇到console.log(5) ,打印 5
6.代码同步任务执行完毕,查看微任务队列中是否有任务,发现有console.log(4)。
7.微任务队列被清空,查看宏任务队列中是否有任务,发现有console.log(2)。
常见的宏任务
1.script代码(整体的外层代码其实就是第一个宏任务)
2.setTimeout,setInterval,setImmediate
3. i/o事件
4. UI事件,比如点击事件
常见的微任务
promise
process.nextTick(Node.js)