JavaScript中的事件循环机制
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. 事件循环机制

4. 参考资料