以下是关于 Web Workers 的全面梳理,涵盖核心概念、使用场景、进阶技巧及注意事项,帮助我们充分利用多线程能力优化前端性能:
一、Web Workers 基础概念
1. 定义与作用
- 定义:Web Workers 是浏览器提供的 API,允许在 独立后台线程 中运行 JavaScript 脚本,避免主线程阻塞。
- 核心价值:
- 并行计算:处理 CPU 密集型任务(如数据加密、图像处理)。
- 保持 UI 响应:将耗时任务移至 Worker,防止页面卡顿。
2. 类型与适用场景
类型 | 特点 | 适用场景 |
---|---|---|
Dedicated Worker | 主线程与 Worker 一对一绑定,私有通信 | 独立后台任务(如复杂计算) |
Shared Worker | 多个窗口/标签页共享同一 Worker | 跨页面数据同步(如实时协作工具) |
Service Worker | 代理网络请求,支持离线缓存 | PWA、资源预加载、消息推送 |
二、基础使用
1. 创建与通信
-
主线程代码:
// 创建 Worker const worker = new Worker('worker.js'); // 发送消息 worker.postMessage({ task: 'calculate', data: 1000 }); // 接收消息 worker.onmessage = (e) => { console.log('Result:', e.data); }; // 错误处理 worker.onerror = (e) => { console.error