我们应该知道,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 以及通信机制的归纳。