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)
}
相关推荐
codeGoogle12 分钟前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
用户938515635071 小时前
React Context 与自定义 Hook 从底层到实践:「跨层级通信 + 副作用封装」全解析
前端·javascript·react.js
滴滴答答哒2 小时前
VUE3+element-plus MultiSelect 多选下拉组件
前端·javascript·vue.js
其美杰布-富贵-李2 小时前
04 watch 与 Vue 响应式数据流
前端·javascript·vue.js
赵大仁3 小时前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
kyriewen5 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒5 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李5 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区5 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户938515635075 小时前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js