美文网首页饥人谷技术博客
async和defer的作用和区别

async和defer的作用和区别

作者: l_meng | 来源:发表于2017-02-28 19:34 被阅读0次

    作用

    • 没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。
    • 有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。
    • 有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
    Paste_Image.png
    (图片引自http://www.cnblogs.com/tanhehe/p/4236021.html

    区别

    • defer:脚本延迟到文档解析和显示后执行,有顺序
    • async:不保证顺序
      async 脚本在script文件下载完成后会立即执行,并且其执行时间一定在 window的load事件触发之前。这意味着多个async脚本很可能不会按其在页面中的出现次序顺序执行。与此相对,浏览器确保多个 defer 脚本按其在HTML页面中的出现顺序依次执行,且执行时机为DOM解析完成后,document的DOMContentLoaded 事件触发之前。

    相关文章

      网友评论

        本文标题:async和defer的作用和区别

        本文链接:https://www.haomeiwen.com/subject/elwxgttx.html