欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 在Vue中 使用 Web Worker

在Vue中 使用 Web Worker

2025/3/10 10:55:07 来源:https://blog.csdn.net/m0_46149348/article/details/146141078  浏览:    关键词:在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>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词