异步加载

异步基础知识:

纯小白科普

1.异步加载是什么?和同步加载有什么区别吗?

2.异步加载存在的意义是什么?为什么要采用异步加载?

3.异步加载和单线程有什么关系吗?

4.什么时候要使用异步加载?

5.异步加载有几种方式?

1.异步加载

异步加载又称为非阻塞加载,当浏览器在下载JS的同时,还会进行后续页面处理。

同步加载,又称为阻塞加载,与异步加载的功能相反。当浏览器在下载JS时,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像,渲染,代码执行等。

2.为何要使用异步加载?

异步加载可以优化脚本文件的加载,提高页面的加载速度。

3.异步和单线程的关系?

JS是一个单线程的语言,单线程就是一次只能干一件事,如果想让它同时干两件,不好意思,做不到,后面的事件请排队。

显然,只使用单线程这样的机制很容易会出现卡顿的情况。

为了防止卡顿,人们设计了一种方案解决了JS的单线程问题,使得JS具备了异步的属性。首先,浏览器分配一个主线程给JS用来执行任务(函数),但是一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端的某些任务是非常耗时的,比如网络请求,定时器和事件监听,如果让这些任务都和其他任务一样老老实实的排队等待执行的话,它们的执行效率是会很低的,严重的话甚至会导致页面的假死。所以,浏览器为了这些耗时的任务开辟了另外的线程,那里面主要包括http请求线程,浏览器定时触发器,浏览器事件触发线程这三个任务

4.什么时候要使用异步加载?

1.定时任务:setTimeout,setInterval

2.网络请求:ajax请求,动态加载

3.事件绑定

1个点击事件被绑定了之后,我们是不知道浏览者什么时候会点击这个按钮的,如果浏览者一直不点击按钮,难道就不给他看页面接下来的动作了吗?显然不可能,所以要之后的事情和绑定事件同时做,如果浏览者点击了,那就按点击之后的动作往下走,如果真的没点击,那他也不会因为过程被阻塞而导致看不到其他的画面。

5.异步加载有几种方式?

异步加载常见的三种方式:


以上均为本人学习过程的总结,如有错误,欢迎指正!