什么时候可以使用异步?

And*_*Evt 5 javascript

我现在正在学习异步脚本加载。我async在脚本标签-中有一个关于attr 的问题<script async src="...">

这里是一些信息,http://www.w3schools.com/tags/att_script_async.asp,我的问题是关于- 存在时,它指定脚本将在可用时立即异步执行。线。

问题:如果我有2个脚本:

<script async src="url1.js"><script> // 200kb
<script async src="url2.js"><script> // 2kb
Run Code Online (Sandbox Code Playgroud)

并且第二个script必须在第一个之后执行(它使用一些Objectsfunctions从中执行)-页面加载后是否会这样?加载后,第一个脚本将首先执行,然后-第二个还是不执行?

从上面的粗体字符串(我理解这是可以理解的),它比script加载的速度更快-它的执行速度更快,并且在我们的示例中,我们会出现错误,虽然第一个script尚未加载和执行,但是第二个已经在尝试获取它。(以及何时可以使用async脚本加载?仅当我们的脚本彼此不独立时?)

lazy loading script在这种情况下,ps是获得正确脚本执行顺序的唯一方法-防止错误?

dec*_*eze 2

如果没有该async属性,浏览器将停止处理页面并首先下载引用的脚本;下载并执行脚本后,它将继续处理页面上的下一个标签。这有两个后果:

  1. 所有脚本都保证按照它们包含在 HTML 中的顺序加载,并且保证正确解析依赖项。
  2. 如果提前包含这些脚本,页面加载会明显延迟。同步脚本应始终包含在页面末尾,以免访问者不必要地等待。

如果设置该async属性,浏览器将继续加载页面,而不会停止处理标签,并稍后script加载脚本。脚本加载的确切时间是未定义的,并且您不能依赖于任何特定的执行顺序。如果两个脚本之间存在依赖关系,则无法正确加载它们,因为一个脚本是否会先于另一个脚本加载完全取决于运气。async

因此,async加载仅对没有其他依赖项的脚本有用。或者:您将脚本与window.onload事件挂钩,并避免在此之前进行任何交叉引用;加载所有脚本(包括async脚本)后将触发该事件。