宏队列与微队列
2020-03-31 本文已影响0人
仔崽06
1.javascript是单线程,基于事件循环,非阻塞IO的
特点:处理I/0的应用,不适合cpu运算密集的应用.
说明:事件循环中使用一个事件队列,在每个时间点,系统只会处理一件事情,即使电脑有多个cpu核心,也无法并行处理多个事件
事件循环
Event Loop,不管是前端还是移动端等开发,都离不开事件循环机制,它会循环监听任务,并在适当的时机取出,执行和释放任务,更新UI等操作更新ui渲染界面比较耗时,不同的渲染引擎有自己的一套渲染时机逻辑,决定要不要马上执行更新,更新ui成本比较大.
任务队列包括
![](https://img.haomeiwen.com/i6662793/919724601cc29bc6.png)
闭包
闭包特点:1.在一个函数内部定义另外一个函数,并返回内部函数或者立即执行内部函数.2.在内部函数可以读取外部函数定义的局部变量.3.让局部函数的变量始终保存在内存当中.也就是说垃圾回收机制无法回收.
js执行时有两个异步队列:宏队列与微队列,优先执行微队列中的任务.每次执行完宏队列中的任务后,都会查看微队列中是否有任务.假如有任务则先执行微队列中的任务.再执行宏队列中的任务.执行顺序:微队列->宏队列->微队列->宏队列.(浏览器会先执行一个宏任务:script)
示例
![](https://img.haomeiwen.com/i6662793/995b28b94a664de6.png)
执行顺序解析
![](https://img.haomeiwen.com/i6662793/f88531ff78992516.png)
![](https://img.haomeiwen.com/i6662793/4455ffd329415a4e.png)
执行结果
![](https://img.haomeiwen.com/i6662793/b45eb4cf62cd20c9.png)