浏览器 Web Workers

浏览器中把计算任务移出主线程的工作者线程模型。

#type / concept #status / growing #resource / javascript #resource / web #platform / browser

[!info] related notes

浏览器 Web Workers

Web Worker 让浏览器在页面主线程之外再启动一个独立脚本执行环境,用来处理不适合放在主线程里的计算任务。

它解决什么问题

  • 避免 CPU 密集型任务阻塞页面交互
  • 把解析、加密、压缩、批量计算等工作移出主线程
  • 让主线程更专注于 DOM、交互与渲染

关键边界

  • Worker 是独立执行环境
  • 可以并行执行脚本
  • 不能直接操作 DOM
  • 默认通过消息传递与主线程通信

常见类型

  • Dedicated Worker: 由单个页面创建和使用
  • Shared Worker: 可被多个同源上下文共享
  • Service Worker: 主要处理请求拦截、缓存与离线能力

运行时特点

  • Worker 里没有 window
  • 全局入口通常是 self
  • 可使用 postMessage() 与主线程交换数据
  • 需要共享内存时,可继续看 SharedArrayBufferAtomics

什么时候不用它

  • 只是等待网络返回时,Promise / async 通常已经够用
  • 需要直接访问 DOM 时,还是要回到主线程

放回主题图里看

创建于 2025/1/1 更新于 2026/5/27