第 17 章 多线程编程

TypeScript 代码最终会编译成 JavaScript 代码并执行,而 JavaScript 是单线程运行的,即同一时间只能执行一个 JavaScript 任务。随着 JavaScript 所处理的程序越来越复杂,单线程运行变得越来越不方便,尤其是如果通过 JavaScript 执行需要大规模 CPU 运算的任务,例如,大量图像、视频、音频的解析,大量的 AJAX 请求或者网络服务轮询与大量数据的计算处理(排序、检索、过滤、分析)等任务,单线程显得力不从心,会引起 UI 阻塞、界面卡顿等现象。但这并不是计算机达到性能瓶颈导致的,而是单线程无法充分发挥计算机多核 CPU 的能力,各个任务只能逐个执行而无法并行执行导致的。

为了解决这个问题,各浏览器及 Node.js 都引入了多线程模式。由于多线程并非 ECMAScript 官方规范(浏览器多线程是 HTML5 规范,Node.js 多线程是 Node.js 官方模块),因此在浏览器和 Node.js 中的多线程编程模式有所区别。

下面分别介绍如何在浏览器和 Node.js 中进行多线程编程。