javascript中的宏任务和微任务(一)


一、宏任务和微任务有哪些

宏任务:setTimeout,setInterval,ajax,dom,宏任务是由浏览器提供的

微任务:promise,async/await,微任务是由es6提供的

二、微任务一定会比宏任务限制性

看看下面的代码

 1 console.log(100)
 2 //宏任务
 3 setTimeOut(()=>{
 4    console.log(200) 
 5 })
 6 //微任务
 7 Promise.resolve().then(()=>{
 8   console.log(300)
 9 })
10 
11 console.log(400)
12 
13 //执行结果 100 400 300 200

 三、宏任务和微任务在事件轮询中怎么执行的

1.js机制会事先执行栈(call stack)中的同步任务

2.遇到宏任务定时器,Ajax,dom等操作会压入webapi中,遇到微任务:Promise\async入压入micro task queue队列中

3.call stack执行完毕后开始event loop,会先执行micro task queue队列中的微任务

4.dom渲染

5.最后执行callback Queue的宏任务

6.以上反复执行