13.浏览器的事件循环 引入--异步--定义--常见宏、微任务

1.引入:
由于JS是单线程语言,所以在执行代码的过程中,上面的代码没有执行完成,下面的代码就会一直等待;试想一下,如果我们在代码中发送请求获取数据,而由于网络慢等原因,该操作就比较耗时,如果要等该操作执行完再执行后续的代码,这显然是不合理的,cpu空出来了,利用率降低了,而代码的执行时间也增加了
2.异步:
(紧接上文)我们希望发送一个请求,而这个请求会在浏览器http异步请求的线程里去完成;发送请求以后,就立即执行下面的代码,而需要用到请求结果的代码,则等到请求完成后自动执行;没错,这就是异步的概念。总结一下就是把一段代码放到未来去执行

3.事件循环
(紧接上文)因此,就出现了异步队列;当执行js代码时,遇到异步任务(也就是我们期望在未来执行的一段代码),就会将该任务丢进异步队列挂 起,然后接着执行后面的同步代码;当同步代码执行完毕以后,就将异步队列里的任务拿出来放到函数执行栈里去执行;
其中,异步队列又分为宏任务队列和微任务队列,同步代码执行完毕以后会扫描微任务对列,将达到条件的微任务拿出来执行,扫描完毕后,再扫描宏任务队列,每执行一个宏任务就会扫描微任务队列,宏任务队列扫描完毕,又来扫描微任务队列;而这一循环往复的过程就叫做浏览器的事件循环

4.常见的宏任务:

setTimeOut  setInterval  setImmediate MessageChannel
 requestAnimationFrame I/O  以及UI交互事件

5.常见的微任务:

Promise   MutationObserver   Object.observer  process.nextTick
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值