异步加载的三种方案

本文探讨了JavaScript中异步加载的三种方案:defer、async和按需加载。defer会在DOM解析完成后执行,async则在文件加载完毕后立即执行,无论DOM状态。同时,文章还介绍了浏览器的工作线程,包括JS引擎线程、GUI渲染线程、事件监听线程、计时器线程和网络线程。

1.defer 异步加载,要等到dom文档全部解析完成之后才会执行

2.async 异步加载,只要js文件加载完就执行,只能加载外部链接的js文件

3.按需加载

 <!-- 按需加载 -->
    <script type="text/javascript">
        function asyncLoaded(url,callback){
            var script = document.createElement("script");
//                script.src = url;   假如说网速非常好,直接执行完成了,后面就监听不到状态的改变了
            if(script.readyState){
                script.onreadystatechange = function(){
                    if(script.readyState == "complete" || script.readyState =="loaded"){
//                            执行某个函数
                        callback()
                    }
                }
            }else{
                script.onload = function(){
//                        执行某个函数
                    callback()
                }
            }
            script.src = url;    //异步的过程
            document.head.appendChild(script)    
        }
        asyncLoaded("05.js",function(){
            fn()          //05.js中的函数
        })

浏览器线程

1.js引擎线程

js内核,js引擎,负责处理执行JavaScript脚本,也是js主线程,  js是单线处理代码,js负责调配其他子线程来处理一部代码

2.GUI渲染线程

负责渲染浏览器界面,包括解析HTML.css构建dom树,render树,(js引擎与GUI线程是互斥的)

3.事件监听线程

用来处理事件的监听

4.计时器线程   

负责处理定时器

5.网络线程

处理http请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值