Skip to content

我们应该知道,JavaScript 是一门单线程的语言,因此 Main Threa主线程 的大量计算等操作毫无疑问会造成页面卡顿、性能损耗。

而 Worker 则是浏览器提供的一条独立线程,方便开发者进行自定义操作。

在 Main Thread 与 Worker Thread 之间,是利用了 MessageEvent 事件进行通信。

Web Worker 是一类 worker 的统称。而且这一类 worker 各有特点。

在现实业务中,根据 API,我们可以将其大致细分为:

  • Worker:用于大型计算等消耗性能的操作;

  • SharedWorker:用于跨 Tab 数据共享;

  • ServiceWorker:用于 JavaScript 控制资源缓存,以实现渐进式 web 应用。

在使用方式,Worker 和 SharedWorker 很类似,因此我们归为本章节统一论述。

而 ServiceWorker 与前两者大相径庭,涉及到 PWA 以及 Cache 策略等等,因此单独一个章节归纳。

所有 Worker 的学习,都是对 Main Thread 和 Worker Thread 的 API 以及通信机制的归纳。