6.3es新特性web worker

Web Worker 是 HTML5 提供的多线程技术,允许在浏览器后台创建独立线程执行 JavaScript 代码,解决主线程因耗时任务导致的 界面卡顿 问题。

核心特性

  • 线程隔离 :Worker 线程无法直接操作 DOM 或访问 window 对象
  • 通信机制 :通过 postMessageonmessage 与主线程异步通信
  • 生命周期:主线程可主动终止 Worker,Worker 也可自行关闭
    • Worker 脚本必须与页面同源,或通过 CORS 允许跨域加载

      // 主线程终止
      worker.terminate();

      // Worker 自行终止
      self.close();

优势​

  • ​性能提升​:将复杂计算移至后台,避免页面卡顿。
  • ​并行处理​:利用多核 CPU 提升任务执行效率。
  • ​稳定性​:隔离错误,防止主线程崩溃影响用户体验

实战案例

主线程代码

复制代码
// 创建 Worker 
const worker = new Worker('worker.js'); 
 
// 发送数据 
worker.postMessage({  type: 'calc', data: 10});
 
// 接收结果 
worker.onmessage  = (e) => {
  console.log(' 计算结果:', e.data); 
};
 
// 终止 Worker 
document.querySelector('#stop').onclick  = () => worker.terminate(); 

Worker 线程代码 (worker.js)

复制代码
self.onmessage  = (e) => {
  if (e.data.type  === 'calc') {
    const result = heavyTask(e.data.data);  // 模拟耗时计算 
    self.postMessage(result); 
  }
};
 
//计算斐波那契数列
function heavyTask(n) {
  
  return n <= 1 ? n : heavyTask(n-1) + heavyTask(n-2);
  
}

应用场景

场景 案例 优势
CPU 密集型计算 大数据排序、图像处理 避免主线程阻塞
实时数据处理 音视频解码、日志分析 多线程并行处理
后台轮询任务 WebSocket 心跳检测、数据同步 资源隔离保证稳定性

兼容性

  • ​主流浏览器​:Chrome、Firefox、Edge、Safari 均支持(IE 10+ 部分支持)。

  • ​检测方法​

    复制代码
    if (typeof Worker !== 'undefined') {
      // 支持 Web Worker
    } else {
      // 降级方案(如 Web Workers 无法使用时的处理)
    }

通过合理使用 Web Workers,开发者可将 CPU 密集型任务移至后台,显著提升页面流畅度。

相关推荐
wuhen_n7 小时前
网络请求在Vite层的代理与Mock:告别跨域和后端依赖
前端·javascript·vue.js
用户693717500138412 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦12 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户693717500138412 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
漫随流水13 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
踩着两条虫14 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
jzlhll12315 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
用头发抵命16 小时前
Vue 3 中优雅地集成 Video.js 播放器:从组件封装到功能定制
开发语言·javascript·ecmascript
蓝冰凌16 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛16 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js