admin 管理员组

文章数量: 887053


2024年1月12日发(作者:报名)

JS同步异步延迟加载的方法

JavaScript是一种单线程的脚本语言,在执行任务时是按照顺序进行的,这就导致了一个问题,当我们执行一个耗时很长的任务时,会阻塞后续的代码执行,而且在等待这个任务完成的过程中用户界面也无法响应其他用户的操作。为了解决这个问题,JavaScript中引入了同步、异步和延迟加载的概念。

1.同步

同步指的是任务按照顺序依次执行,一个任务执行完毕后再执行下一个任务。同步任务会阻塞后续代码的执行,直到当前任务执行完毕。在

JavaScript 中,大部分代码都是同步执行的,例如变量的赋值、函数的调用等。同步任务的执行顺序是可控的,但是执行时间过长会导致页面假死。

2.异步

异步是相对于同步而言的,异步任务不会阻塞后续代码的执行,在异步任务执行的同时,JavaScript可以继续执行后续的代码。JavaScript中的异步任务主要是通过浏览器的Web API来实现的,比如定时器、Ajax请求、事件监听等。当异步任务执行完成后,会将回调函数推入任务队列中等待执行。由于异步任务的执行是由浏览器控制的,所以执行顺序是不确定的。异步任务可以提高页面的响应速度,但是在处理复杂依赖关系时会带来一定的难度。

3.延迟加载

延迟加载指的是将页面上的资源(如图片、脚本、样式等)推迟加载,直到用户需要使用到它们时再进行加载。延迟加载可以减少页面的初始加

载时间,提高页面的加载速度和用户体验。延迟加载可以通过以下几种方法来实现:

-懒加载:懒加载是一种图片延迟加载的技术,在用户滚动到指定位置时,再加载图片,可以减少页面的初始加载时间,提高页面的加载速度。懒加载可以通过监听滚动事件,判断图片是否进入可视区域来实现。

- 异步加载:使用HTML5中的async和defer属性来异步加载JavaScript脚本。async属性表示脚本的加载不会阻塞页面的其他内容加载和渲染,而defer属性表示脚本的加载会在HTML文档解析完毕后才执行,但是会在DOMContentLoaded事件之前执行。异步加载可以提高页面的加载速度,但是会导致脚本的执行顺序变得不确定。

- 分块加载:将大的文件进行分块加载,按需加载文件的不同部分,可以减少页面的初始加载时间。分块加载可以通过webpack等打包工具来实现,将大的文件按需进行拆分,并通过代码分割的方式进行加载。

总结:

JavaScript中的同步、异步和延迟加载是为了解决单线程执行带来的问题,在页面的响应速度和用户体验方面都起到了重要的作用。同步任务按顺序执行,会阻塞后续代码的执行;异步任务不会阻塞后续代码的执行,可以提高页面的响应速度;延迟加载可以优化页面的初始加载时间,提高页面的加载速度。在实际开发中,可以根据具体需求选择合适的方式来处理任务,以提高用户体验和页面性能。


本文标签: 加载 执行 任务 页面