一、什么是宏观任务和微观任务
任务可以分为同步任务和异步任务;异步任务又可以分为宏观任务和微观任务,自从es6后,js引擎也可以发布异步任务。
宏观任务:通过浏览器、node。js等宿主环境来请求
微观任务:是js引擎发起的任务
二、执行流程
首先执行的是同步代码
其次是微观任务代码
最后是宏观任务
三、代码
1.同步代码 (js 执行栈/回调栈)
2.微任务的异步代码(is引擎)
process.nextTick (node)
Promise.then() catch(),Promise本身为同步,them/catch的回调是异步
se.then() catch()
Async/Await
Object.observe 等等
3.宏任务的异步代码(宿主环境)
script (代码块)
setTimeout / setlnterval 定时器
setlmmediate 定时器宏任务了
四、应用
1、从上到下,把所有的同步任务、异步任务中的宏观任务和微观任务找出来。
2、然后根据执行循序,先进先出,所以输出结果是1,2,6,4,3,5
注:值得注意的是,在await之后都是微观任务,所以将console.log(3)放到微观任务中
是不是轻轻松松搞定宏观任务和微观任务的啦!