# 4-浏览器中的页面循环系统
# 01|消息队列和事件循环系统:页面是怎么"活"起来的?
# 消息队列
# 事件循环系统
# 02|webAPI:setTimeout是如何实现的?
- 首先为了支持定时器的实现,浏览器增加来延时队列
- 其次,由于消息队列排队和一下系统级别的限制,通过setTimeout设置的回调任务并非总是可以实时的被执行,这样就不能满足一些 实时性比较高的的需求了
hashmap结构,等到执行这个结构的时候,会计算hashmap中每个任务是否到期了,到期了就去执行,直到所有到期的任务都执行结束, 才会进入下一轮循环。
# 03|WebAPI:XMLHttpRequest是怎么实现的?
# 04|宏任务和微任务:不是所有任务都是一个待遇。
# 宏任务
- 渲染事件(如解析DOM、计算布局、绘制)
- 用户交互事件(如鼠标点击、滚动页面、放大缩小等);
- Javascript脚本执行事件。
- 网络请求完成、文件读写完成事件。
# 微任务-可以在实时性和效率之间做一个有效的权衡
# 05|Promise:使用Promise,告别回调函数
异步回调-回调地狱
# 06|async/await:使用同步的方式去写异步代码
生成器就是协程的一种实现方式。