JavaScript中的事件循环机制

55 阅读1分钟

1. 单线程模型

1.1 什么是单线程模型,JavaScript为什么是单线程?

  • 诞生目的----操作网页dom节点
  • 避免给宿主环境(浏览器)引入不必要的麻烦

1.2 单线程模型的优缺点?

  • 优点:简单易用,对宿主环境要求较低
  • 缺点:遇到费时的任务,如IO操作,导致脚本长时间停滞,cpu空等,资源浪费

1.3 为什么引入Web Worker,对单线程模型的影响?

  • 为解决上述问题,HTML5提出 Web Worker 标准,由浏览器提供一套Web Workers API供js调用,js单线程执行任务时,遇到费时的任务可先“挂起”,执行后续任务,解决停滞问题。
  • 挂起操作可以理解为js单线程通过Web Worker API创建工作者线程并和工作者线程通信,由创建的工作者线程异步处理这部分任务,原来的单线程又叫主线程。

2. 同步任务、异步任务、任务队列

2.1 什么是任务队列?

  • 任务队列是一系列等待工作者线程执行的任务。
  • 只有异步任务才有任务队列的概念。
  • 任务队列不只一种。

2.2 工作者线程和任务队列的关系?

  • 在JavaScript中,工作者线程和任务队列的关系是通过Web Worker API实现的。
  • 工作者线程是运行在后台的JavaScript脚本,它不会影响页面的性能。
  • 工作者线程可以执行任务队列中的任务。

3. 事件循环机制

事件循环简图.png

4. 参考资料