Web Workers 是浏览器提供的后台线程机制,使 JS 能在不阻塞主线程的前提下执行耗时任务,其核心是隔离的 JS 上下文,仅通过 postMessage 通信,不可访问 DOM,支持专用/共享 Worker 及模块化使用。

Web Workers 是浏览器提供的在后台线程中运行 JavaScript 的机制,它让脚本能在不阻塞主线程(即 UI 渲染和用户交互)的前提下执行耗时任务,从而实现真正意义上的“多线程”效果(注意:JS 本身仍是单线程的,Workers 是独立的 JS 执行上下文)。
Web Workers 的核心特点
它不是传统操作系统级的线程,而是一个隔离的、仅能通过消息通信的 JS 环境:
- 完全独立于主线程,无法访问 DOM、window、document 等全局对象
- 与主线程之间只能通过 postMessage() 和 onmessage 传递可序列化的数据(如 JSON 兼容对象,不支持函数、DOM 节点、undefined)
- 支持加载外部脚本(
importScripts()),也支持模块化 Worker(需指定type: "module") - 有专用 Worker(
Worker)、共享 Worker(SharedWorker,多个页面共用)和工作线程池(Service Worker 属于另一类,用途不同)
如何创建并使用一个基础 Worker
分三步:写 Worker 脚本 → 实例化 Worker 对象 → 双向通信
例如,主线程中启动一个计算斐波那契数列的 Worker:
立即学习“Java免费学习笔记(深入)”;
// main.js
const worker = new Worker('fibonacci-worker.js');
<p>worker.postMessage({ n: 40 }); // 发送任务</p><p>worker.onmessage = function (e) {
console.log('结果:', e.data); // 接收结果
};</p><p>worker.onerror = function (err) {
console.error('Worker 出错:', err);
};登录后复制
对应 Worker 文件(fibonacci-worker.js):
标签: javascript java html js json 操作系统 大数据 浏览器 app ai win 作用域 red
还木有评论哦,快来抢沙发吧~