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.以上反复执行