异步加载js的三种方式及优点

异步加载js的三种方式及优点

js的异步加载

什么是js的异步加载?为什么要异步加载?异步加载js的三种方式?1.defer 异步加载2.async 异步加载3.动态创建script标签

什么是js的异步加载?

javascript 从执行机制来说是一个单线程加事件队列的语言,即代码会一行一行自上而下往下执行。js中执行有两种方式,即 同步 和 异步。 这里简单介绍下 同步 和 异步 :

同步:从上到下执行,如果上件事情没有完成,就继续做上件事情,直到等上件事情完成后才会去做下一件事情js的大部分编程都是同步的。

异步:如果一个任务出现一个或者多个回调函数(callback),则上一个任务执行完成后,不是立刻执行下一个任务,而是执行回调函数。后一个任务也不是等前一个任务结束就立马执行。所以程序的执行顺序与任务的排列顺序是不一致的(这叫做异步)。说到这就得介绍下异步的执行机制。

异步执行的机制:

1.所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。

2.主线程之外,还存在一个"任务队列"(task queue)。只要执行过程中碰到了异步任务,

就会把异步任务添加到"任务队列"中。

3.一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。

那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

为什么要异步加载?

1.上面说了因为js单线程,同一时间只能做一件事。

2.一旦执行过程中遇到等待的任务(如网络请求、定时任务)就会卡住,这时页面出现空白,

这种等待让用户体验很差。

3.但是异步不会阻塞代码执行,页面就不会卡住,所以使用异步,异步采用回调callback的形式。

异步加载js的三种方式?

1.defer 异步加载

1.1 特点 :只有IE适用,需等到dom文档全部解析完(dom树生成完,才会被执行)

2.async 异步加载

2.1 特点:加载完就执行,async 只能加载外部脚本,不能把js代码写在script标签里

3.动态创建script标签

IE浏览器 上有一个状态码,script.readyState,功能与 ***script.onload***相似 script.readyState = ‘loading’ 最开始的值 script.readyState = ‘complete’ || ‘loaded’–> 监听这个方法的事件: onreadystatechange

相关推荐

美图,十四只不同的兔女郎,哪个气质最好
线上365bet投注

美图,十四只不同的兔女郎,哪个气质最好

📅 07-09 👍 516
为什么中国菜里的牛肉不需要熟成?
365bet手机官网网址

为什么中国菜里的牛肉不需要熟成?

📅 07-04 👍 114
360软件有哪些
线上365bet投注

360软件有哪些

📅 07-09 👍 303