我正在努力理解异步标记的工作。假设我的html中有以下代码:
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/big.js"></script>
<script src="js/small.js" async></script>
</head>脚本big.js要大得多,并且加载在 small.js 之后,并且仍然首先执行,Eventsmall.js添加了异步标记。异步标记不应该保证脚本一下载就执行吗?
注意:如果我将异步放到big.js脚本中,则首先执行small.js。
发布于 2015-01-27 18:14:06
首先,不能保证对异步脚本的执行顺序。也就是说,您所描述的行为是由代码本身造成的。
如果big.js不是使用async加载的,因为它是在DOM中的small.js之前加载的,规范要求它首先执行。实际上,在执行JavaScript之前,浏览器无法执行任何附加的big.js。这是因为不使用async加载的脚本不是异步的。他们保证是同步的。
注意,尽管如此,仍然可以异步下载small.js。事实上,无论浏览器是否显式地标记为异步,浏览器都可以异步下载所有资源。规范只规定有关执行顺序的规则,仅此而已。
https://stackoverflow.com/questions/28177160
复制相似问题