返回顶部
首页 > 资讯 > 前端开发 > JavaScript >javascript可不可以是异步加载
  • 516
分享到

javascript可不可以是异步加载

2024-04-02 19:04:59 516人浏览 薄情痞子
摘要

这篇文章主要讲解了“javascript可不可以是异步加载”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript可不可以是异步加载”吧!

这篇文章主要讲解了“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可不可以是异步加载这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: javascript可不可以是异步加载

本文链接: https://lsjlt.com/news/93167.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • javascript可不可以是异步加载
    这篇文章主要讲解了“javascript可不可以是异步加载”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript可不可以是异步加载”吧! ...
    99+
    2024-04-02
  • javascript可不可以加密
    这篇文章主要讲解了“javascript可不可以加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript可不可以加密”吧! ...
    99+
    2024-04-02
  • mozilla firefox可不可以卸载
    本篇内容介绍了“mozilla firefox可不可以卸载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mozilla firefox可以卸...
    99+
    2023-07-05
  • javascript可不可以使用socket
    这篇文章主要介绍了javascript可不可以使用socket的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript可不可以使用socket文章都会有所收获,下面我...
    99+
    2024-04-02
  • JavaScript中可不可以用class
    本文小编为大家详细介绍“JavaScript中可不可以用class”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中可不可以用class”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • JavaScript可不可以写后端
    今天小编给大家分享一下JavaScript可不可以写后端的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • autodesk material library可不可以卸载
    今天小编给大家分享一下autodesk material library可不可以卸载的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-05
  • microsoft visual c++可不可以卸载
    本篇内容介绍了“microsoft visual c++可不可以卸载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!microsoft vis...
    99+
    2023-07-01
  • javascript的函数可不可以hook
    这篇文章主要介绍了javascript的函数可不可以hook的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript的函数可不可以hook文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • javascript可不可以开发游戏
    小编给大家分享一下javascript可不可以开发游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! javascript可以开发游戏,JavaScript实现...
    99+
    2024-04-02
  • jquery可不可以加css样式
    这篇文章主要讲解了“jquery可不可以加css样式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery可不可以加css样式”吧! ...
    99+
    2024-04-02
  • windows microsoft .net framework可不可以卸载
    本篇内容介绍了“windows microsoft .net framework可不可以卸载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!m...
    99+
    2023-07-01
  • javascript可不可以用el表达式
    本篇内容介绍了“javascript可不可以用el表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • JavaScript语句块可不可以嵌套
    JavaScript语句块是可以嵌套的。语句块是由一对大括号({})包围起来的一组语句,可以用来组织和控制语句的执行顺序。在一个语句...
    99+
    2023-10-12
    JavaScript
  • 使用jquery可不可以加样式
    这篇文章给大家分享的是有关使用jquery可不可以加样式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 用jquery可以加样式,方法:1、使用“$(...
    99+
    2024-04-02
  • javascript是否可以不写函数名
    这篇文章主要介绍了javascript是否可以不写函数名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇javascript是否可以不写函数名文章都会有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • JavaScript可以不开启吗
    JavaScript是一种广泛使用的编程语言,它在当前的互联网世界中扮演着非常重要的角色。许多网站都需要JavaScript才能正常运行,因此很多人认为在访问网站时需要开启JavaScript。但实际上,是否开启JavaScript是由访问...
    99+
    2023-05-14
  • windows驱动精灵可不可以卸载
    本篇内容主要讲解“windows驱动精灵可不可以卸载”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows驱动精灵可不可以卸载”吧!驱动精灵可以卸载吗:答:驱动精灵是可以卸载的。驱动精灵软...
    99+
    2023-06-30
  • phpMyAdmin是不是下载就可以直接用
    小编给大家分享一下phpMyAdmin是不是下载就可以直接用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!phpMyAdmin下...
    99+
    2024-04-02
  • win10邮件和日历可不可以卸载
    是的,Windows 10中的邮件和日历应用可以卸载。您可以通过以下步骤来卸载它们:1. 打开“设置”应用。您可以通过在开始菜单中搜...
    99+
    2023-10-19
    win10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作