当前位置: 首页 > 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>

相关文章:

  • 2025-3-9 一周总结
  • 强化学习(赵世钰版)-学习笔记(4.值迭代与策略迭代)
  • 算力100问☞第80问:如何实现算力的弹性伸缩?
  • 配置 Thunderbird 以使用 QQ 邮箱
  • TinyWebServer项目笔记——02 半同步半反应堆线程池
  • FIWARE:开源的物联网平台,支持设备虚拟化和数据管理
  • java后端开发day30--常见算法(二)-------Arrayslambda
  • 每日一练之合并两个有序链表
  • 【0基础学Python】基础语法Part1
  • Next.js Server Action 提交 vs 前端 Fetch 提交:核心区别与优劣分析
  • 降级选型啊
  • 【向量模型】 开源通用向量模型BGE (BAAI General Embedding)
  • 英文字体:现代复古美学精致细节浓缩式衬线排版logo标题艺术字体 La Luxes Serif
  • 网络安全高级软件编程技术 网络安全 软件开发
  • 蓝桥杯备赛日记【day1】(c++赛道)
  • 解决VScode 连接不上问题
  • OpenWrt 源码目录分析与最终文件系统分析
  • CSS Web安全字体
  • Jump( 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15). )
  • Autosar技术栈总目录
  • spring boot做网站/第一接单网app地推和拉新
  • wordpress管理地址/网站的优化
  • 个人网页设计html加js代码/seo网站推广专员
  • 门户网站和新闻网站的区别/策划营销推广方案
  • 最新军事动态最新消息/大丰seo排名
  • 企业网站哪家做的好/互联网运营自学课程