異步首先我們需要知道html中頁面中插入<script></script>在正式的html規(guī)范中:
async
屬性:表示應該立即下載腳本,但不妨礙頁面中的其他操作并级,比如下載資源或等待加載其他腳本。但這個屬性只是對外部文件有效侮腹。
defer
屬性:表示腳本可以延遲到html文檔完全被解析顯示之后才開始加載嘲碧,它也是對外部文件有效。也就相當于告訴瀏覽器父阻,立即下載愈涩,但是延遲執(zhí)行。
但是只要不存在async || defer
屬性加矛,瀏覽器都會按照<script></script>元素在頁面中的出現(xiàn)的先后順序對他們依次解析履婉。在第一個<script></script>元素包含的代碼解析完成后,第二個包含<script></script>的代碼才會被解析到斟览,接下來才是第三個...第四個...
下面展示一段代碼,理解async毁腿!
<!doctype html>
<html>
<head>
<title></title>
<script type="text/javascript" async src="js/e1.js"></script>
<script type="text/javascript" async src="js/e2.js"></script>
.cc {
color: red;
}
.bb {
color: blue;
}
</head>
<body>
<h1 id="a">我是紅色?還是藍色?</h1>
</body>
</html>
這個代碼中已烤,第二個腳本文件可能會在第一個腳本文件之前執(zhí)行鸠窗。因此,確保兩者之間互不依賴非常重要胯究。制定async屬性的目的是不讓頁面等待兩個腳本下載和執(zhí)行塌鸯,從而異步加載頁面其他內容。