下列代码,可以证明,1、微任务是在dom渲染之前执行的。2、js代码会阻塞浏览器渲染进程。
结果:发现弹出alert框,控制台输出1,elements内没有东西(Dom没渲染,被alert卡住了)。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script></head><body><div class="app"></div><script>var p = $('<div>demo</div>')$('.app').append(p);console.log($('.app').length);alert('同步!')</script></body></html>
js将异步队列里的任务划分为宏任务和微任务宏任务有:1)setTimeout, setInterval, setImmediate,2)I/O、3)、UI rendering等微任务有:1)process.nextTick、2)Promise、3)Object.observe(已废弃)、4)MutationObserver(html5新特性)等
