使用脚本异步属性的含义是什么?

What are the implications of using the script async attribute?

我正在从事 ASP.NET MVC 4 HTML5 项目。最近我们添加了最多需要 10 秒才能加载的营销脚本。当我去寻找发生了什么时,我发现 none 的脚本是异步加载的。

我最初的反应是在我们拥有的每个第三方脚本上添加 async,但后来我想到了会产生什么影响。我不是在谈论必须按特定顺序加载的本地脚本。

我唯一能想到的是,如果用户设法在脚本加载之前完成表单并进入下一页第三方脚本将不会获得该页面的营销信息(我同意) .

将脚本切换为 async 时可能发生的其他事情会毁了我的一天?

更新: 因为对于某些人来说我在寻找什么并不明显 here's one example.

其中一个副作用是您将无法使用 document.write,即 described in more detail here

另一个问题是,如果有一个序列,在这个序列中,来自第三方的脚本被期望触发命令可能会发生任何事情,行为也会发生。这可以通过分离加载和触发脚本来解决,但这可能是不可能的,因为这取决于有能力的第三方开发人员。