前端web worker提升性能实战案例

前端web worker提升性能实战案例

Web Worker 的特点
多线程:Web Worker 运行在独立的线程中,不会阻塞主线程。
通信机制:Worker 和主线程之间通过 postMessage 和 onmessage 进行通信。限制:Worker 不能直接操作 DOM。
Worker 不能使用 window 对象或某些浏览器 API(如 alert、document 等)。Worker 脚本必须与主线程脚本同源(相同协议、域名和端口)。

前端使用web worker开启多线程让计算量的的内容在单独线程运行解决主线程卡死的问题

vue项目代码如下:
demo.vue页面内容
 <div class="operationOrderClass">
    <div class="titleMain">订单查询列表</div>
    <input type="text">
    <el-button type="text" @click="exportExcel">导出</el-button>
  </div>
demo.vue页面js内容
import * as XLSX from 'xlsx';//npm i xlsx下载
 export default{
 methods:{
	  exportExcel(){
	      console.time('timeFN'); // 打印执行时间
	      let wr=new Worker('/worker.js');//Worker 脚本必须与主线程脚本同源
	      console.log('wr=',wr);
	      console.log('导出');
	      let arr=[];
	      for(let i=0;i<100000;i++){
	        arr.push({
	          enterpriseName: "测试企业"+i,
	          projectName: "测试项目"+i,
	          guaranteeNo: "测试保函编号"+i,
	          payAmount: "测试金额"+i,
	          merchantName: "测试机构"+i,
	          orderStatus: "测试状态"+i,
	          updatedTime: "测试更新时间"+i,
	        })
	      }
	      console.log('arr=',arr);
	      wr.postMessage(arr);
	      wr.addEventListener('message',function(e){
	        console.log('e=',e.data);
	        // 生成 Excel 文件并触发下载 将e.data写入名为data.xlsx的文件
	        XLSX.writeFile(e.data, 'data.xlsx');//这步骤需要放到主线程 
	        因为可能需要操作  dom worker无法操作dom
	        console.timeEnd('timeFN'); // 打印执行时间
	      })
	    },// 导出
	 }
}

worker.js

importScripts('/xlsx.full.min.js'); // importScripts 是 Worker 中特有的方法,用于同步加载并执行外部 JavaScript 文件 先使用cdn下载放到vue项目的public文件夹中 xlsx.full.min.js
self.addEventListener("message", function (e) {
    let arr = e.data;
    // 将 JSON 数据转换为工作表
    const ws = XLSX.utils.json_to_sheet(arr);
    // 创建一个新的工作簿
    const wb = XLSX.utils.book_new();
    // 将工作表添加到工作簿中,并命名为'Sheet1'
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
    // 发送工作簿给主线程
    self.postMessage(wb);
})

通过以上代码可以将10万级别的大文件数据,处理生成文件并下载下来,在生成Excel过程中可以将主线程空闲做表单输入等其他事情而不阻塞主线程执行页面或其他js操作;如果没有web worker主线程下载10万的表格数据处理需要3.5s,这期间是阻塞主线程的;

内容概要:本文提出了一种融合多尺度Wavelet模型的跨文化英语交际智能模型系统(FL-DP-Wavelet),旨在通过多模态数据融合、多尺度特征提取与跨文化适应性建模,提升智能系统的文化敏感性和语境理解能力。该模型通过结合小波变换与深度学习优化语言信号的时频特征提取,基于跨文化敏感性发展模型(DMIS)构建文化适应性评估模块,并设计多模态数据融合框架,增强跨文化场景下的语义解析鲁棒性。实验结果显示,系统在跨文化语境下的语义理解准确率提升12.7%,文化适应性评分优于基线模型15.3%。 适合人群:从事跨文化交流、国际商务、外语教育的研究人员和技术开发者,特别是对智能系统在跨文化场景中的应用感兴趣的学者和工程师。 使用场景及目标:①跨文化商务谈判、教育合作和公共外交等场景中,需要提升智能系统的文化敏感性和语境理解能力;②帮助系统实现实时文化适应,减少因文化差异引起的语义误判和非语言行为冲突;③通过多模态数据融合,增强智能系统在复杂跨文化环境中的语义解析能力。 其他说明:该研究不仅提出了新的理论框架和技术路径,还在实际应用中验证了其有效性和优越性。未来将聚焦于小波-Transformer耦合、联邦学习隐私保护和在线学习算法,进一步推动系统向自主文化融合演进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值