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)
}
相关推荐
光影少年几秒前
react navite相比较传统开发有啥优势?
前端·react.js·前端框架
岁月宁静1 分钟前
软件开发工程师如何借助 AI 工具进行软件自测
前端·ai编程·测试
我爱学习_zwj4 分钟前
动态HTTP服务器实战:解析请求与Mock数据
开发语言·前端·javascript
NMBG225 分钟前
外卖综合项目
java·前端·spring boot
小白阿龙6 分钟前
样式不生效/被覆盖(CSS优先级陷阱)
前端·css
Beginner x_u9 分钟前
Vue 事件机制全面解析:原生事件、自定义事件与 DOM 冒泡完全讲透
前端·javascript·vue.js·dom
Emma_Maria9 分钟前
关于vant-ui-vue 的datepicker 时间选择错乱问题的处理
前端·vue.js·ui
Dabei15 分钟前
Android 语音助手简单实现与语音助手“执行任务”交流
android·前端
dongczlu16 分钟前
iOS 循环引用篇 菜鸟都能看懂
前端
Alsn8619 分钟前
26.IDEA 专业版中创建简单的 Web 项目并打包部署到本地Tomcat 9
前端·tomcat·intellij-idea