亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript可不可以是異步加載

發布時間:2022-03-10 16:26:56 來源:億速云 閱讀:164 作者:iii 欄目:web開發

這篇文章主要講解了“javascript可不可以是異步加載”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“javascript可不可以是異步加載”吧!

JavaScript可以是異步加載。異步加載表示瀏覽器在下載執行JavaScript同時,還會繼續進行后續頁面的處理,可以優化腳本文件的加載,提高頁面的加載速度;因為涉及到各個瀏覽器對解析腳本文件的不同機制,因此更多的采用異步加載。

本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript可以是異步加載嗎

1.首先要了解什么是異步與同步

同步加載:同步模式,又稱阻塞模式,會阻止瀏覽器的后續處理,停止了后續的解析,因此停止了后續的文件加載(如圖像)、渲染、代碼執行。

異步加載:異步加載又叫非阻塞,瀏覽器在下載執行 js 同時,還會繼續進行后續頁面的處理。

通俗的來講:同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。

異步就是你叫我,然后自己去吃飯,我得到消息后可能立即走,也可能等到下班才去吃飯。所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。

2.為什么要用異步

優化腳本文件的加載提高頁面的加載速度,一直是提高頁面加載速度很重要的一條。因為涉及到各個瀏覽器對解析腳本文件的不同機制,以及加載腳本會阻塞其他資源和文件的加載,因此更多的采用異步加載。

3.如何用異步

小編認為使用異步加載有三種方式。

async ,加載完就執行,只能加載外部腳本,不能把js寫在script 標簽里.

//1.async  只能加載外部腳本
<script src="js/index.js" async="async"></script>

defer 異步加載,但要等到dom文檔全部解析完才會被執行。只有IE能用內部外部js均可使用

//2.defer  只能IE使用,文檔解析完成以后才會去執行
<script src="js/index.js" defer="defer"></script>

按需求加載,考慮瀏覽器兼容

//3.按需求加載,考慮瀏覽器兼容
    function loadScript(url,callback){
            var script = document.createElement("script");
            
            if(script.readyState){  IE瀏覽器兼容
                script.onreadystatechange = function(){
                    if(script.readyState == "complete" || script.readState == "loaded"){
                        callback()
                    }
                }
            }else{         大部分瀏覽器兼容
                script.onload = function(){  
                    callback()
                }
            }
            script.src = url;
            document.head.appendChild(script)
        }
        loadScript("08.js",function(){
            test()
        })
//外部js
function test(){
    console.log("hello world")
}

js加載時間線

1、創建Document對象,開始解析web頁面。解析HTML元素和他們的文本內容后添加Element對象和Text節點到文檔中。這個階段document.readyState = ‘loading’。

2、遇到link外部css,創建線程加載,并繼續解析文檔。

3、遇到script外部js,并且沒有設置async、defer,瀏覽器加載,并阻塞,等待js加載完成并執行該腳本,然后繼續解析文檔。

4、遇到script外部js,并且設置有async、defer,瀏覽器創建線程加載,并繼續解析文檔。對于async屬性的腳本,腳本加載完成后立即執行。(異步禁止使用document.write())

5、遇到img等,先正常解析dom結構,然后瀏覽器異步加載src,并繼續解析文檔。

6、當文檔解析完成,document.readyState = ‘interactive’。

7、文檔解析完成后,所有設置有defer的腳本會按照順序執行。(注意與async的不同,但同樣禁止使用document.write());

8、document對象觸發DOMContentLoaded事件,這也標志著程序執行從同步腳本執行階段,轉化為事件驅動階段。

9、當所有async的腳本加載完成并執行后、img等加載完成后,document.readyState = ‘complete’,window對象觸發load事件。

10、從此,以異步響應方式處理用戶輸入、網絡事件等。

感謝各位的閱讀,以上就是“javascript可不可以是異步加載”的內容了,經過本文的學習后,相信大家對javascript可不可以是異步加載這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄陵县| 吴江市| 行唐县| 扶余县| 英吉沙县| 昭苏县| 唐山市| 花莲县| 阜康市| 班戈县| 邹平县| 滦南县| 望城县| 阿巴嘎旗| 白河县| 涟源市| 河西区| 苍梧县| 穆棱市| 阿勒泰市| 瓮安县| 建昌县| 华亭县| 建始县| 修文县| 贵德县| 马公市| 花莲县| 金秀| 新竹市| 河东区| 孟村| 绿春县| 蓬溪县| 开江县| 上犹县| 东山县| 方山县| 炉霍县| 托克托县| 浪卡子县|