1

我的问题很简单:同步和异步 JavaScript 脚本加载之间的性能差异是什么?

从我收集的同步代码中,同步代码阻止了页面的加载和/或其余代码的执行。这发生在两个层面

首先,在实际加载的脚本级别,其次,在 JavaScript 代码本身。

例如,在页面上:

同步:<script src="demo_async.js" type="text/javascript"></script>

异步:<script async src="demo_async.js" type="text/javascript"></script>

编辑:删除无效代码示例

那么,使用这些不同的加载方法和 JavaScript 模式在性能上的真正区别是什么?

4

2 回答 2

4

对于您的第一个问题/片段,它更多的是关于控制流而不是性能。性能只是一个隐含的结果。

<script>传统上,如果遇到标签,它们会阻止HTML呈现器。这意味着,如果您在标记的最顶部加载带有阻止标记的巨大javascript 文件,<script>只要脚本正在加载和评估,用户就不会在页面上看到任何进度。

相反,如果我们用async和/或defer<script>等属性标记标签,浏览器将不再停止HTML 渲染过程,而是异步加载和评估脚本块。一个实现如何做到这一点,不是你关心的(无论是在后台使用真正的线程还是只是按顺序处理它)。


您的第二个片段并不是真正的异步代码。它只是调用自身的函数表达式。那仍然被认为是同步执行

于 2012-12-10T17:00:41.400 回答
0

当您异步加载内容时,浏览器同时可以加载页面本身的其他部分。

除此之外,如果您仅比较脚本本身的负载,则两种方法的性能相同。

于 2012-12-10T17:01:48.690 回答