Web Worker使用

web worker是什么?

Web Workers 是 HTML5 中的一项技术,它允许你在浏览器中创建多线程 JavaScript 的一种方式。通常,JavaScript 在浏览器中是单线程执行的,这意味着所有的任务都是按顺序执行的,如果有一个任务需要执行很长时间,那么会导致页面变得不响应,用户体验下降。Web Workers 的出现解决了这个问题,它允许你在后台运行 JavaScript 代码,而不会影响到页面的主线程,从而提高了页面的响应性能。

使用场景

  • 复杂的计算任务:例如数学运算、图像处理、视频处理等。
  • 大规模数据处理:对大型数据集进行排序、过滤、搜索等操作时,使用 Web Workers 可以加速这些操作,而不会影响用户界面的响应性能。
  • 后台数据同步和处理:例如电子商务网站中使用 Web Workers 来处理用户的购物车操作。
  • 文件操作:对大型文件进行读取、解析、处理等操作时,例如在前端进行文件上传和处理时,可以使用 Web Workers 来异步处理文件的读取和解析,以及生成文件预览或者进行文件压缩等操作。

如何使用

javascript 复制代码
// 模拟生成大数据
function generateData() {
  var data = [];
  for (var i = 0; i < 10000000; i++) {
    var item = {
      id: i,
      value: Math.random() * 100
    };
    data.push(item);
  }
  return data;
}

// 检测函数执行的时间
function getTime(fn) {
  // 在函数开始处获取开始时间
  const startTime = performance.now();
  fn();
  // 在函数结束处获取结束时间
  const endTime = performance.now();
  // 输出执行时间
  console.log(endTime - startTime);
}

首先来看平常的数据执行

javascript 复制代码
getTime(generateData)  //  283.19999998807907

属于实打实的在浏览器中执行了283ms,但凡数据生成的复杂一些,量多一些,时间都是难以接受的。

来看运用web worker

javascript 复制代码
// worker.js 文件
self.onmessage = function(event) {
  var result = generateData();
  self.postMessage(result);
};
javascript 复制代码
function workersGenerateData(){
  var worker = new Worker('worker.js');
  worker.postMessage('start');
  worker.onmessage = function(event) {
    console.log('Processed');
  };
}
javascript 复制代码
getTime(workersGenerateData) // 0.09999996423721313
相关推荐
meilindehuzi_a40 分钟前
LangChain.js 对话 Memory 实战:History 持久化、截断与摘要压缩
java·javascript·langchain
江畔柳前堤1 小时前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
liuyicenysabel1 小时前
Grafana + Prometheus 分级告警配置设计(P0/P1/P2)
javascript·grafana·prometheus
Cry丶1 小时前
Vue 3 业务管理页面实战:组件拆分、父子通信与弹窗复用
前端·javascript·vue.js·父子通信·组件拆分·弹窗复用
雪芽蓝域zzs2 小时前
Vue前端配置路由通配捕获 404
前端·javascript·vue.js
小凯在掘金2 小时前
类型判断什么时候用 typeof?
javascript
幸运小圣2 小时前
JavaScript 关键字与保留字学习笔记详细讲解,一篇get ✅【JavaScript查缺补漏】
javascript·笔记·学习
独立开发之道3 小时前
Three.js 创建 VR 内容:四步把一个普通 3D 场景送进头显
javascript·3d·vr
Coodor4 小时前
在前端如何转换IC卡卡号格式
前端·javascript·nfc·卡号格式
百慕大三角5 小时前
给 SPA 加页面切换动画:View Transitions API 从入门到实战
前端·javascript