终于来了,事件循环!

什么是事件循环?

这就要牵扯很多概念了。首先,拆解来看。

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

浏览器的事件循环

  • 进程和线程
    首先,说说进程和线程。
  • node 的事件循环
  • 微任务
  • 宏任务
  • 浏览器和 node 的差别