Skip to content

async和defer的区别和作用

Posted on:June 6, 2023

其中蓝色线代表 JavaScript 加载;红色线代表 JavaScript 执行;绿色线代表 HTML 解析。

async

async 属性表示异步执行引入的 JavaScript,如果已经加载好,就会开始执行,这种方式加载的 JavaScript 依然会阻塞 HTML 解析

defer

表示延迟执行引入的 JavaScript,即这段 JavaScript 加载时 HTML 并未停止解析,这两个过程是并行的。等 HTML 渲染完成后才依次执行 javascript

从上图可以看出,defer 和 async 的相同点是都会异步加载 javascript 脚本,区别是在于 defer 会延迟执行脚本,而 async 加载完就立即执行且会阻塞 HTML 解析

在加载多个 JS 脚本的时候,async 是无顺序的加载,而 defer 是有顺序的加载