Skip to content

Web Worker

什么是 Web Worker?

JavaScript 语言是单线程模型,很容易造成阻塞。然而 Web Worker 的出现,就是为 JavaScript 创造 “多线程” 环境,允许主线程创建 Worker 线程,将一些任务分配给 Worker 处理。

在主线程运行的同时,Worker 在后台运行,互不干扰。

什么时候使用 webworker?

  1. 大量的 CPU 密集型任务(大文件上传、图表计算)
  2. 任务可被独立拆分。

快速上手

html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Web Worker 示例</title>
  </head>
  <body>
    <script src="main.js"></script>
  </body>
</html>
js
// 创建 Worker 实例
const worker = new Worker('worker.js')

// 向 Worker 发送消息
worker.postMessage(5)

// 接收 Worker 返回的消息
worker.onmessage = function (e) {
  console.log('来自 Worker 的结果:', e.data) // 输出: 25
}

// 可选:关闭 Worker
// worker.terminate();
js
self.onmessage = function (e) {
  // 收到主线程消息
  const data = e.data
  // 执行一些计算(比如平方)
  const result = data * data
  // 把结果发回主线程
  self.postMessage(result)
}

基于 MIT 许可发布