当前位置: 首页 > news >正文

在Vue中 使用 Web Worker

安装worker-loader

npm install worker-loader

在这里插入图片描述

编写worker.js


onmessage = function (e) {// onmessage获取传入的初始值let sum = e.data;for (let i = 0; i < 200000; i++) {for (let i = 0; i < 10000; i++) {sum += Math.random()}}// 将计算的结果传递出去postMessage(sum);
}

通过行内loader 引入 worker.js

import Worker from "worker-loader!./worker"

在这里插入图片描述

结果

在这里插入图片描述

完整代码

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png" /><HelloWorld msg="Welcome to Your Vue.js App" /><div><button @click="makeWorker">开始线程</button><!--在计算时 往input输入值时 没有发生卡顿--><p><input type="text" /></p></div></div>
</template><script>
import HelloWorld from "./components/HelloWorld.vue";
import Worker from "worker-loader!./worker";export default {name: "App",components: {HelloWorld,},methods: {makeWorker() {// 获取计算开始的时间let start = performance.now();// 新建一个线程let worker = new Worker();// 线程之间通过postMessage进行通信worker.postMessage(0);// 监听message事件worker.addEventListener("message", (e) => {// 关闭线程worker.terminate();// 获取计算结束的时间let end = performance.now();// 得到总的计算时间let durationTime = end - start;console.log("计算结果:", e.data);console.log(`代码执行了 ${durationTime} 毫秒`);});},},
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

http://www.mrgr.cn/news/93742.html

相关文章:

  • ESP8266 WiFi 收发器入门(第 1 部分)
  • 强化学习和最优控制 - 知识图谱
  • Spring AI学习
  • MySQL复习笔记
  • CGI程序刷新共享内存视频流到HTTP
  • moodle 开源的在线学习管理系统(LMS)部署
  • Java学习--MySQL
  • 中级网络工程师面试题参考示例(1)
  • 山东大学计算机科学与技术学院软件工程实验日志(更新中)
  • 【vitepress】如何搭建并部署自己的博客网站
  • VBA 数据库同一表的当前行与其他行的主键重复判断实现方案1
  • 【洛谷P1080国王游戏】2025-3-7
  • Java 大视界 -- 基于 Java 的大数据实时数据处理框架性能评测与选型建议(121)
  • 1.12.信息系统的分类【ES】
  • langchain系列(九)- LangGraph 子图详解
  • Django小白级开发入门
  • FPGA学习篇——Verilog学习5(reg,wire区分及模块例化)
  • 大数据_数仓建模_八股
  • 考研机试常见基本题型
  • 蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码