首页 > 其他分享 >vue3 引入workers 大量优化业务代码和复杂的计算的代码

vue3 引入workers 大量优化业务代码和复杂的计算的代码

时间:2024-04-28 14:56:20浏览次数:24  
标签:console log 代码 worker params vue3 const workers

前沿

vite 页面引入worker

在src 新建一个 worker.d.ts 文件

declare module '*.worker.ts' {
    class WebpackWorker extends Worker {
      constructor();
    }
    export default WebpackWorker;
  }

在 tsconfig.json 页面引入

  "lib": ["esnext", "dom", "dom.iterable", "scripthost", "WebWorker"],

 

最后新建 work 文件夹

export {};
const getCounter = (params: any) => {
  console.log(params);
  const start = new Date().getTime();
  console.log('开始计算斐波那契数任务');
  let count = 0;
  // 1e9
  const newArr = [];
  for (let i = 0; i < 1e9; i++) {
    count += i;
  }
  const end = new Date().getTime();
  console.log('继续主线程,耗时:', end - start);
  postMessage(count);
};
onmessage = function (event) {
  const { data } = event;
  const { type, params } = event.data;
  console.log(params);
  if (type === 'start') {
    getCounter(params);
  }
  if (data === 'stop') {
    postMessage('ended');
  }
  console.log(event.data);
};

 

 最后在你需要的页面引入 头部(vue3 cli )

const worker = new Worker(new URL('@/workers/scan.worker.ts?worker', import.meta.url));

在vite 里面可以直接引入

import MyWorker from "@/utils/workers/workers.ts?worker"

 

下面的逻辑就是接受那边的数据

onMounted(() => {
  console.log(worker);
    worker.postMessage(
      {
        type: 'start',
        params: { name:  1 },
      });
  // set up an onmessage listener on Countdown worker object to listen to updates from the worker thread
  worker.onmessage = (e: any) => {
    console.log(e.data);
    // check if the counter value sent by the worker is divisible by 10, and if it is, call the getDogImage method again
    // if (counter.value % 10 === 0) {
    //   getDogImage();
    // }
  };
   worker.onerror = (e: any) => {
      console.log(e);
    };
});
worker.onmessage 方法就是可以接受那边的处理完的数据 当然也可以不需要接受
缺点: 不能操作dom,
优点: 性能优化大大优化

 

标签:console,log,代码,worker,params,vue3,const,workers
From: https://www.cnblogs.com/yf-html/p/18163717

相关文章

  • python爬取指定网址图片代码
    代码importosimportrequestsfrombs4importBeautifulSoup#指定要爬取的网址url='https://www.baidu.com/'#请求网页内容response=requests.get(url)response.raise_for_status()#如果请求失败,将抛出异常#使用BeautifulSoup解析网页内容soup=Beautif......
  • sqlserver sp_who2和inputbuffer的使用,如何查询进程执行的脚本代码【转】
    一、sp_who2的使用1、存储过程的位置 sp_who官方解释地址:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-who-transact-sql?redirectedfrom=MSDN&view=sql-server-2017 2、查出的列名的含义CPUTime: 进程占用的......
  • python可复用代码(连接数据库/字符串处理/爬虫/日志配置)【1】
    importpymysqlimportloggingimporttimeimportrandomimportloggingimportrequestsfrombs4importBeautifulSoup"""获取数据库连接"""#连接数据库获取游标defget_conn():""":return:连接,游标""&qu......
  • TMemo 关键字代码 着色
    PosLabel:TLabel;是显示行列号unitUnit1;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComCtrls;type//InterjectedClassTMemo=class(stdctrls.TMemo)privateprocedureWMPaint(varMe......
  • 【代码更新】标准差
     【代码更新】标准差每513个点中,对前512个取其标准差,最后一个点不在计算范围内;具体的过程是,将512点的平方和均值,减去,512个点的均值的平方方差=用平方和的均值减去均值的平方得到方差1//用平方和的均值减去均值的平方得到方差23moduledownSampling(4inp......
  • 响应式原理(Vue3、Vue2)
    1.Vue3副作用函数(onMounted、watchEffect)帮助管理组件中的副作用逻辑,并自动追踪其依赖关系,以确保在数据变化时能够自动触发副作用函数的更新。会自动追踪被其内部函数引用的响应式数据。当这些数据发生变化时,Vue3会自动重新运行副作用函数,确保副作用与数据的状态保持同步。......
  • SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)
    前言熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller)、业务类(Service)、持久层(Repository)、数据库映射(Mapper)、各种DO类构成了我们服务端的代码。初学的时候,觉得新鲜手写这些东西不觉得有啥,但是写久了就会觉得很烦。好不容易在数据库中写完了一遍字段,在Java代码又要......
  • 记录一些写代码遇到的小错误
    写代码时报错:SyntaxError:Non-UTF-8codestartingwith'\xbc'infileE:\pythonproject\flaskProject2\model\KSql_clean.pyonline5,butnoencodingdeclared;seehttps://peps.python.org/pep-0263/fordetails这个错误通常表示您的Python文件包含非UTF-8编码......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——客户端处理RPC请求的原理
    远程过程调用RPC——客户端处理RPC请求的原理及源代码分析 客户端无论是同步调用还是异步调用,每次RPC请求都会生成一个Call对象,并使用seq作为key保存在map中,服务端返回响应值时再根据响应值中的seq从map中取出Call,进行相应处理。 客户端发起RPC调用的过程大致如下所示,我们......
  • Go的Gin框架中使用Cgo调用Python的CApi调用Python代码
    在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库packagecpython//#cgoCFLAGS:-I"Q:/Sill-/anaconda/envs/poetry/include"//#cgoLDFLAGS:-L"Q:/Sill-/anaconda/envs/poetry/libs"-lpython311//#include<Python.h>imp......