浏览器常驻线程有下面这些

  1. js 线程
  2. GUI线程 和 js 线程互斥
  3. http 网络请求线程
  4. 定时器触发线程
  5. 浏览器事件处理线程

分别监听各自线程上的事件,当事件完成之后,将回调放入event quenue当中。所有非js线程是用来辅助js祝线程,通过将各自线程当中的任务执行完毕时将其注册的回调放入event quenue 当中,当js祝线程同步任务执行完毕时,就会去event quenue当中查找任务。

js 执行机制 - 单线程

js 设计出来是为了与用户交互,处理dom ,如果js是多线程,同一时间内一个线程想要修改dom,另一个线程想要删除dom,问题就变得复杂很多。

  • 大量数据操作怎么办:单线程计算能力有限,大量数据需要计算渲染的话,可以配合后端进行操作,比如ssr技术

javascript 是基于单线程运行的,同时又是可以异步执行的,一般这种既是单线程又是异步的语言都是基于事件来驱动的,恰好浏览器就给javascript提供来这么一个环境。
深入剖析js线程
对于同步,直接进去主线程去执行,对于异步任务,进去event table,当指定的事件完成的时候,将事件回调推入event quenue队列中。

相关文章: