下列代码,可以证明,1、微任务是在dom渲染之前执行的。2、js代码会阻塞浏览器渲染进程。
    结果:发现弹出alert框,控制台输出1,elements内没有东西(Dom没渲染,被alert卡住了)。

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
    8. </head>
    9. <body>
    10. <div class="app"></div>
    11. <script>
    12. var p = $('<div>demo</div>')
    13. $('.app').append(p);
    14. console.log($('.app').length);
    15. alert('同步!')
    16. </script>
    17. </body>
    18. </html>
    1. js将异步队列里的任务划分为宏任务和微任务
    2. 宏任务有:1)setTimeout, setInterval, setImmediate2)I/O3)、UI rendering
    3. 微任务有:1)process.nextTick2)Promise3)Object.observe(已废弃)、4)MutationObserver(html5新特性)等