浅谈javascript中的defer、async

自动驾驶仿真 (四)—— 基于PreScan与Simulink的AEB系统多场景验证 本文详细介绍了基于PreScan与Simulink的AEB系统多场景验证方法,涵盖标准场景搭建、复杂工况扩展及控制策略优化。通过仿真技术,显著降低测试成本并提升场景覆盖率,有效解决实车测试中的痛点问题。特别适用于自动驾驶领域的AEB系统开发与验证。 阅读详情

转载自http://www.cnblogs.com/dreamGong/p/5125030.html
引言
  开始重读《JavaScript高级程序设计》一书,看到关于JavaScript中关于defer、async的部分。网上查询了点资料,觉得蛮好的。现在总结下。

defer/async(Html5新增)
  首先我们来看一下在

<script type="text/javascript" defer="defer" async="true/false" src="js文档地址"></script>

下面我们一个一个来看,看看这两个属性的设置对于JavaScript文件加载和执行的影响。

  1、<script src="script.js"></script>

  没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

  2、<script async src="script.js"></script>

  有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。

  3、<script defer src="myscript.js"></script>

  有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

  然后从实用角度来说呢,首先把所有脚本都丢到 之前是最佳实践,因为对于旧浏览器来说这是唯一的优化选择,此法可保证非脚本的其他一切元素能够以最快的速度得到加载和解析。

  下面我们通过一张形象的图来更加直观的解释这两个属性。
  这里写图片描述
  蓝色线代表网络读取,红色线代表执行时间,这俩都是针对脚本的;绿色线代表 HTML 解析。

  此图告诉我们以下几个要点:
  

  • defer 和 async 在网络读取(下载)这块儿是一样的,都是异步的(相较于 HTML 解析)
  • 它俩的差别在于脚本下载完之后何时执行,显然 defer 是最接近我们对于应用脚本加载和执行的要求的
  • 关于 defer,此图未尽之处在于它是按照加载顺序执行脚本的,这一点要善加利用
  • async 则是一个乱序执行的主,反正对它来说脚本的加载和执行是紧紧挨着的,所以不管你声明的顺序如何,只要它加载完了就会立刻执行
  • 仔细想想,async 对于应用脚本的用处不大,因为它完全不考虑依赖(哪怕是最低级的顺序执行),不过它对于那些可以不依赖任何脚本或不被任何脚本依赖的脚本来说却是非常合适的,最典型的例子:Google Analytics

defer和async的比较
  相同点:
- 加载文件时不阻塞页面渲染;
- 对于inline的script无效;
- 使用这两个属性的脚本中不能调用document.write方法;
- 有脚本的onload的事件回调;
- 允许不定义属性值,仅仅使用属性名;
 不同点:
- html的版本html4.0中定义了defer;html5.0中定义了async;这将造成由于浏览器版本的不同而对其支持的程度不同;
- 执行时刻:每一个async属性的脚本都在它下载结束之后立刻执行,同时会在window的load事件之前执行。所以就有可能出现脚本执行顺序被打乱的情况;每一个defer属性的脚本都是在页面解析完毕之后,按照原本的顺序执行,同时会在document的DOMContentLoaded之前执行。
这两个属性会有三种可能的组合:
- 如果async为true,那么脚本在下载完成后异步执行。
- 如果async为false,defer为true,那么脚本会在页面解析完毕之后执行。
- 如果async和defer都为false,那么脚本会在页面解析中,停止页面解析,立刻下载并且执行。

交通仿真软件:SUMO_(13).Python脚本与TraCI接口 通过TraCI接口,用户可以实现与SUMO仿真器的实时交互,获取和控制交通数据。本文档详细介绍了如何使用Python脚本与TraCI接口进行交互,包括基本的设置、数据获取和控制方法。此外,还展示了几个高级应用示例,如交通流优化、多代理系统、车辆路径规划和车辆行为模拟。这些示例可以帮助用户更好地理解如何利用TraCI接口进行复杂的交通仿真和分析。希望这些内容对您有所帮助,如果您有任何问题或需要进一步的帮助,请参考SUMO的官方文档或社区支持。 阅读详情

相关推荐

C++游戏开发入门:从环境配置到第一个完整项目

C++ 作为游戏开发领域的关键语言,其学习路径常因语法枯燥而令初学者却步。以项目驱动的方式学编程,能帮助学习者将变量、循环、函数、指针等基础概念融入实际游戏逻辑中,获得即时反馈与完整项目经验。掌握合适的开发环境是高效实践的前提,例如在 Windows 下使用 VS Code 搭配 MinGW-w64 编译器,配合调试器与构建脚本,即可搭建轻量可扩展的 C++ 游戏开发工作流。此类课程通常面向无基础人群,从控制台小游戏逐步过渡到带游戏循环的完整作品,过程中还需关注性能观察、素材授权与版本管理。无论你是刚接触编

weixin_30621959的博客 540

Script 标签 type=module, defer, async 的作用

属性可以帮助我们更好地管理脚本的加载流程,从而提高页面的加载速度和用户体验。本文将深入探讨这些属性的工作原理、应用场景以及它们之间的区别,并通过详细的代码示例来展示如何在实践中使用它们。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。标签的属性是如何帮助我们更好地管理和优化脚本的加载与执行过程的。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,标签的属性对于控制JavaScript的加载和执行顺序至关重要。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 2723

16G显存+llama.cpp跑大模型的黄金配置指南

大语言模型(LLM)本地部署的核心瓶颈在于显存与推理效率的平衡。llama.cpp作为轻量级C/C++推理引擎,通过GGUF模型格式、量化压缩(如Q4_K_M)和CUDA底层优化,显著降低GPU资源需求。在消费级硬件中,16G显存成为兼顾模型能力(如Qwen3-4B、Llama-3-8B)、长上下文支持(4K token)与系统稳定性的关键阈值。它既规避了12G显存的容量焦虑,又绕开了24G高端卡的成本与散热负担,特别适合Windows 11原生环境下的生产级AI应用,如RAG、智能客服与文档分析。

weixin_32629853的博客 404

js异步加载之defer、async、type=module

script标签可以使用defer、asyc以及type=module来异步加载js,这三者之间的去区别如下: defer 如果script标签设置了该属性,则浏览器会异步的下载该文件并且不会影响到后续DOM的渲染; 如果有多个设置了defer的script标签存在,则会按照顺序执行所有的script; defer脚本会在文档渲染完毕后,DOMContentLoaded事件调用前执行。 a...

jyb123的专栏 4246

BQ25798双电源输入4节电池升降压充电与最大功率跟踪于光伏板应用

介绍一颗具有窄范围直流电压NVDC、路径管理PPMT、光伏板最大功率跟踪及反向放电OTG升降压充电控制器,带I2C接口能对内部寄存器做控制

linkedin_38804946的博客 1674

Research Proposal:自动驾驶 行人运动预测

Research Proposal about Pedestrian/Cyclist Motion Prediction for Self-Driving Vehicles   If I can be provided with the opportunity to conduct PhD research in pedestrian/cyclist motion prediction for...

Poetry Wanderer的博客 3086

引用JavaScript文件时的两个属性defer和async

引用js文件格式如下: <script type="text/javascript" defer="defer" async="true/false" src="js文档地址"></script> defer="defer":该属性用来通知浏览器,这段脚本代码将不会产生任何文档内容。例如JavaScript代码中的document.write()方法将不会骑...

weixin_30693183的博客 190

ORCAD 层次化原理图使用TCL获取位号的方法

orcad tcl 获取occurrence位号的方法。

m0_46675718的博客 1125

js defer和async的区别

当浏览器碰到script脚本的时候: &lt;script src="script.js"&gt;&lt;/script&gt; 没有defer或async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该script标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。 &lt;script async src="script.js...

baidu_39305094的博客 1054

【GameFramework框架内置模块】6、实体(Entity)

实体Entity就是一个实体的基本单元,类似于Unity的GameObject对象本体,然后这个本体上面附加其他各种各样组件,才能实现各种各样的功能。一般需要在游戏运行时动态加载的游戏对象,比如怪物、武器、子弹、特效,都需要给这个物体挂载一个实体Entity,这样的话就可以方便的对实例出来的对象进行管理。下面就来看一下如何使用吧。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 3136

SPSS 多重共线性问题:编程解决方案

多重共线性会导致回归模型的不稳定性,使得估计的回归系数失去解释力,降低模型的准确性和可靠性。通过执行这些代码,你将能够计算和查看VIF和CI的结果,并确定是否存在多重共线性问题。上述代码执行了一个回归分析,其中A是我们感兴趣的因变量,B、C、D和E是我们要检查的自变量。接下来,我们将执行多重共线性的检测。通过执行上述代码,你将能够看到每个自变量的VIF和CI值,以及预先设置的阈值。上述代码将计算VIF和CI的值,并将结果写入指定路径的结果文件中。接下来,我们可以使用以下代码来计算和显示VIF和CI的值。

CyberGenius的博客 1426

javascript中的defer和async学习+javascript执行顺序

一、defer和async 我们常用的script标签,有两个和性能、js文件下载执行顺序相关的属性:defer和async defer的含义【摘自https://developer.mozilla.org/En/HTML/Element/Script】——This Boolean attribute is set to indicate to a browser that the scr...

weixin_34199335的博客 314

机器人环境仿真软件:Gazebo_(6).传感器仿真

通过 Gazebo 和 ROS,我们可以方便地配置和使用多种传感器,进行机器人环境的仿真和调试。传感器仿真不仅帮助我们验证和测试机器人的感知能力,还可以在真实部署前发现和解决潜在的问题。本节详细介绍了如何在 Gazebo 中配置激光雷达、摄像头、IMU、声纳和 GPS 传感器,并展示了如何在 ROS 中接收和处理这些传感器数据。此外,还介绍了多传感器融合的基本方法和调试工具,希望这些内容能对你的机器人仿真工作有所帮助。

kkchenjj的博客 1388

浅谈JavaScript中的defer,async

引言   开始重读<<JavaScript高级程序设计>>一书,看到关于JavaScript中关于defer、async的部分。网上查询了点资料,觉得蛮好的。现在总结下。 defer/async(Html5新增)   首先我们来看一下在<script>标签中如何使用这两个属,如下: 1 <script type="text/javas...

diezhi2505的博客 136

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【javaScript】浅谈script标签的defer和async

一、async和defer的定义 先看看async和defer各自的定义吧,翻开红宝书望远镜,是这么介绍的 1.1 defer 这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在 <script> 元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。 HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延...

Umbrella_Um的博客 694

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

浅谈JavaScript异步加载的三种方式——async和defer、动态创建script

1、defer="defer"和async="true/false" html4.0中定义了defer;html5.0中定义了async。 (1)没有defer或async,浏览器会立即加载并执行指定的JS脚本,也就是说,不等待后续载入的文档元素,读到JS脚本就加载并执行。 (2)有async,加载后续文档元素的过程将和JS的加载与执行并行进行(异步)。 (3)有defer,加载后续文档元

筱葭的博客 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Js中的defer属性和async属性

Js中的defer属性和async属性 一、defer和async 1、defer:指外部js文件和当前html页面同时加载(异步加载),但只在当前页面解析完成之后执行js代码 async:指外部js文件和当前html页面同时加载(异步加载),并且在加载的同时会执行js代码 二、defer和sync属性只对外部脚本文件有效: 上图表明:这两个属性在内嵌式js中无效 三、当使用defer和async...

mengduxiu的博客 9229

JavaScript脚本:async,defer

JavaScript 脚本是 web 开发中的重要组成部分,用于为网页添加交互性和动态效果。然而,脚本的加载和执行可能会影响网页的性能和用户体验。async 和 defer是两个用于控制 JavaScript 脚本加载和执行的属性。它们可以帮助开发者优化网页性能,并提升用户体验。理解 async 和 defer 属性的区别和应用场景,对于开发人员来说至关重要。掌握 async 和 defer 属性的含义和工作原理了解如何使用这两个属性来优化网页性能学习如何根据不同的场景选择合适的属性。

爱蹦跶的全栈大A阿 1919

defer 和 async:JavaScript异步编程的利器

本文将介绍defer和async这两个JavaScript异步编程的关键概念,帮助您了解如何利用它们实现更高效、灵活的异步操作。🎉 defer和async是JavaScript异步编程的关键概念,它们可以帮助我们实现更高效、灵活的异步操作。通过了解defer和async的概念、使用场景和工作原理,我们可以更好地利用它们提高页面加载速度和响应性。

你若盛开,清风自来 1362

js中defer和async的区别

js中defer和async学习总结

越努力,越幸运! 6132

JavaScript 标签里的 async 和 defer 有什么区别?

属性加载阻塞 HTML执行时机执行顺序典型场景无属性是立即执行(阻塞解析)按顺序关键脚本async否下载完立即执行(可能乱序)不保证独立脚本(如统计、广告)defer否HTML 解析后按顺序执行按顺序依赖 DOM 或顺序的脚本。

qq_40576344的博客 1215

JS中的defer属性和async属性

JS中的defer属性和async属性

m0_47013706的博客 1460

【javascript】defer、async脚本特性

脚本会“在后台”下载,然后等 DOM 构建完成后,脚本才会执行。因此,请记得添加一个“正在加载”的提示,并禁用尚不可用的按钮。因此,在上面的示例中,两个脚本是并行下载的。当我们需要先加载 JavaScript 库,然后再加载依赖于它的脚本时,这可能会很有用。脚本就是一个会在加载完成时执行的完全独立的脚本。用于需要整个 DOM 的脚本,和/或脚本的相对执行顺序很重要的时候。一样,如果我们要加载一个库和一个依赖于它的脚本,那么顺序就很重要。用于独立脚本,例如计数器或广告,这些脚本的相对执行顺序无关紧要。

Jerryqjr的博客 999

JavaScript-----脚本调用,async 和 defer

async:浏览器遇到async脚本时不会阻塞页面渲染,而是直接下载然后运行。但是,一旦下载完成,脚本就会执行,从而阻止页面渲染。脚本的运行次序无法控制。当页面的脚本之间彼此独立,且不依赖于本页面的其他任何脚本时,async是最理想的选择。defer:使用defer属性加载的脚本将按照它们在页面上出现的顺序加载。在页面内容全部加载完毕之前,脚本不会运行,如果脚本依赖于 DOM 的存在(例如,脚本修改了页面上的一个或多个元素),这一点非常有用。

cmHuney的博客 1018
上一篇: javascript中函数call方法和apply方法
codegarble
博客等级 码龄10年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值