Javascript 什么时候可以使用异步?
异步脚本加载是我现在学习的内容。我有一个关于脚本标记中的Javascript 什么时候可以使用异步?,javascript,Javascript,异步脚本加载是我现在学习的内容。我有一个关于脚本标记中的asyncattr-的问题 下面是一些信息,我的问题是关于这个-当存在时,它指定脚本一可用就会异步执行。行 问题: 如果我有两个脚本: <script async src="url1.js"><script> // 200kb <script async src="url2.js"><script> // 2kb //200kb //2kb 第二个脚本必须在第一个脚本之后执行(它使用一些对
async
attr-
的问题
下面是一些信息,我的问题是关于这个-当存在时,它指定脚本一可用就会异步执行。行
问题:
如果我有两个脚本:
<script async src="url1.js"><script> // 200kb
<script async src="url2.js"><script> // 2kb
//200kb
//2kb
第二个脚本
必须在第一个脚本之后执行(它使用一些对象
或函数
)-页面加载后会这样吗?第一个脚本是否会在加载后首先执行,然后-第二个脚本是否会执行
从上面的粗体字符串可以看出,我的理解是,加载脚本
的速度越快,执行速度就越快,在我们的示例中,我们会出现错误,而第一个脚本
尚未加载和执行,但第二个脚本已经在尝试获取它。(当我们可以使用async
脚本加载时?仅当我们的脚本彼此不独立时?)
p、 如果url2.js依赖于url1.js,您不能对脚本文件使用异步加载,您必须使用同步加载来确保在url2.js之前加载和执行url1.js 使用异步时,可能会出现两种情况:
在异步加载中,您无法控制它们的执行时间,它们在加载后立即执行。如果没有
async
属性,浏览器将停止处理页面并首先下载引用的脚本;下载并执行脚本后,它将继续处理页面上的下一个标记。这有两个后果:
async
属性,浏览器将继续加载页面而不停止处理script
标记,并将在稍后加载脚本。加载脚本的确切时间是未定义的,您不能依赖于任何特定的执行顺序。如果两个脚本之间存在依赖关系,则不能同步加载它们async
因此,
async
加载只对没有其他依赖项的脚本有用或:将脚本挂接到窗口。onload
事件并避免在此之前进行任何交叉引用;在加载所有脚本(包括async
脚本)后,将触发该事件。我们之前曾问过类似的问题
关于执行顺序,JavaScript的执行按照HTML中的顺序进行。如果您的页面在某些事件上依赖JavaScript,并且如果JS方法在页面之前加载,那么它们将导致JS错误
我建议您尽可能使用回调函数来避免上述错误。是开始学习回调函数以及如何实现它们的好地方 如果在
窗口之后调用第一个脚本函数
。从第二个脚本调用onload
事件?他们会工作吗?(换言之:load
事件在所有async scripts
加载后触发?而DOMContentLoaded
事件呢?)是的,如果您将脚本挂接到window.onload
并避免任何交叉引用,直到window.onload
触发为止,您还保证解决了所有依赖关系。这也是一个有用的模式。