创建web workers

2023-10-13 08:28
文章标签 web 创建 workers

本文主要是介绍创建web workers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建一个 Worker 脚本文件:首先,你需要创建一个 JavaScript 文件,这个文件将包含 Worker 线程将要执行的代码。

// worker.js
self.addEventListener('message', function(e) {const data = e.data;switch (data.cmd) {case 'start':self.postMessage('WORKER STARTED: ' + data.msg);break;case 'stop':self.postMessage('WORKER STOPPED: ' + data.msg);self.close(); // Terminates the worker.break;default:self.postMessage('Unknown command: ' + data.msg);}
}, false);

 在主线程中创建 Worker 对象:使用 Worker 构造函数创建一个新的 Worker 对象,并指定 Worker 脚本文件的 URL。

// main.js
const myWorker = new Worker('worker.js');

 发送和接收消息:使用 postMessage 方法发送消息到 Worker,使用 onmessage 事件监听器接收来自 Worker 的消息。

// 发送消息到 Worker
myWorker.postMessage({ cmd: 'start', msg: 'Hello, Worker!' });// 接收来自 Worker 的消息
myWorker.onmessage = function(e) {console.log('Message received from worker: ' + e.data);
};

结束 Worker:如果你想结束一个 Worker,可以调用 Worker 对象的 terminate 方法,或者在 Worker 内部调用 self.close()

// 在主线程中结束 Worker
myWorker.terminate();// 或在 Worker 脚本中结束自己
self.close();

完整的 HTML 示例

<!DOCTYPE html>
<html>
<head><title>Web Worker Example</title>
</head>
<body><button onclick="startWorker()">Start Worker</button><button onclick="stopWorker()">Stop Worker</button><script>let myWorker;function startWorker() {if (typeof(Worker) !== "undefined") {myWorker = new Worker("worker.js");myWorker.postMessage({ cmd: 'start', msg: 'Hello, Worker!' });myWorker.onmessage = function(event) {console.log('Message received from worker: ' + event.data);};} else {console.log("Sorry, your browser does not support Web Workers.");}}function stopWorker() {myWorker.postMessage({ cmd: 'stop', msg: 'Bye, Worker!' });myWorker.terminate();myWorker = undefined;}</script>
</body>
</html>

这样,你就成功创建了一个 Web Worker,并通过消息与其进行了交互。

这篇关于创建web workers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201948

相关文章

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.