Web Worker:前端多线程开发的隐形引擎
一、什么是 Web Worker?
1. 为什么需要 Web Worker
JavaScript 是单线程的,主线程同时只能做一件事。如果执行耗时任务(如复杂计算),页面会卡死。Web Worker 的作用是为 JavaScript 提供子线程,让不需要操作 UI 的任务在后台运行。
2. 什么是 Web Worker
Web Worker 是浏览器提供的多进程机制,帮主线程分担计算任务,避免卡顿。
- Worker 无法直接操作 DOM。
- 通信 通过
postMessage进行。 - 环境 是完全独立的执行环境,有自己的全局作用域。
总结来说,它能并行执行代码,不会卡住界面,常用于解决重 CPU 运算(算力密集型)的前端任务。
二、基本使用方法
1. 创建一个 Worker 文件(worker.js)
// worker.js
self.onmessage = function(e) {
console.log('子线程收到:', e.data);
const result = heavyComputation(e.data);
self.postMessage(result); // 把结果发回主线程
};
function heavyComputation(input) {
let sum = 0;
for (let i = 0; i < 1e9; i++) {
sum += input;
}
return sum;
}
2. 主线程引入并使用
const worker = new Worker('worker.js');
worker.postMessage(10); // 给子线程发消息
worker.onmessage = function() {
.(, e.);
};


