Web Worker 简单使用

通信方法:

(1) 发送消息

主线程:worker.postMessage()

子线程:self.postMessage()

(2) 接收消息

主线程:worker.onmessage()

子线程:self.onmessage()

(3) 监听异常

主线程:worker.onerror()

子线程:self.onerror()

(4) 销毁方法

主线程:worker.terminate()

子线程:self.close()

(5) 加载脚本 (worker内部加载其他脚本)

importScripts('script1', 'script2')

javascript 复制代码
// 主进程
<template>
  <div class="menu-contain card">
    <el-button type="primary" @click="handlerSendMsg">Send</el-button>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const worker = ref()

worker.value = new Worker(new URL('@/workers/handlerArrWorker.ts', import.meta.url))

worker.value.onmessage = (res: any) => {
  console.log(res, 'res')
}

const handlerSendMsg = () => {
  worker.value.postMessage({msg: 'start'})

  console.log(worker.value, 'worker.value')
}
</script>

<style scoped lang="scss">

</style>
javascript 复制代码
// 子进程
self.onmessage = () => {
    let list = []
    for (let index = 0; index < 1000000; index++) {
        list.push(Date.now())
    }

    self.postMessage(list)
}
相关推荐
万少2 分钟前
万少用9个AI工具,帮朋友完成了一个"不可能"的项目
前端
小小小小宇4 分钟前
Vue `import` 为什么可以异步加载
前端
WMYeah9 分钟前
【无标题】
前端·rust·抽奖程序·跨平台抽奖程序
Unbelievabletobe10 分钟前
免费外汇api的响应时间在不同时段下的波动分析
大数据·开发语言·前端·python
大哥,带带弟弟19 分钟前
Grafana 前端嵌入与 JWT 鉴权实战
前端·grafana
小小小小宇20 分钟前
前端 V8 引擎垃圾回收机制与内存问题排查
前端
前端老石人31 分钟前
CSS 值定义语法
前端·css
sheeta199842 分钟前
Vue 前端基础笔记
前端·vue.js·笔记
小小小小宇42 分钟前
GitLab + GitLab Runner + Qiankun 微前端 + Nginx + Node 中间件 前端开发机从零搭建 CI/CD 全流程
前端
前端那点事1 小时前
别再写垃圾组件!Vue3 如何设计「真正可复用」的高质量通用组件
前端·vue.js