什么是事件循环?
这就要牵扯很多概念了。首先,拆解来看。
- 事件:应该都很熟悉了,之前写过发布订阅提到了事件机制。我的理解是,js 作为一门脚本语言,为了完成我们程序员给它指定的各种任务,就必须要有个机制来跟我们交互。知道何时应该接受输入,何时做出计算处理,然后何时给出处理结果并予以输出反馈。而事件机制就很好地完成了这些。与此同时,js 的运行环境(这里当然暂时指浏览器和 node,deno 再发展发展,哈哈)不仅完成了上述的任务,同时还实现了许多别的事情。浏览器的终极目标是渲染网页,让用户能够看到网页所展示的信息;而 node 没有图形界面,但能够完成各种 IO 操作,也是程序员的好帮手。
- 循环:字面意思看来,应该也是一种策略或是机制。即重复这个事件处理的过程,通过一个个的事件处理,并循环往复,最终完成它所有的任务,实现它的价值(最终应该也是不准确的,可以理解为一段时间内)。
浏览器的事件循环
- 进程和线程
首先,说说进程和线程。 - node 的事件循环
- 微任务
- 宏任务
- 浏览器和 node 的差别