当前位置: 首页 > news >正文

避免阻塞主线程 —— Web Worker 示例项目

9a69fede8b2044a79dd834e3e48f20b4.png前期回顾   

迄今为止易用 —— 的 “盲水印“ 实现方案-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_57904695/article/details/136720192?spm=1001.2014.3001.5501

目录

@CSDN 彩色之外

 📝 前言

 🚩 技术栈

 🛠️ 功能

 🤖 如何运行

 ♻️ 示例代码

 ⛑️ 注意事项 

 📝 参考资料


仓库点我👉Huo-zai-feng-lang-li/worker-demo: 本项目演示了如何在 Web 应用中使用 Web Worker 来执行后台任务,以避免阻塞主线程并提高页面的响应性。 (github.com)

@CSDN 彩色之外

 📝 前言

什么是Web Worker ?

Web Worker 允许你在后台线程中运行脚本,而不会影响主线程的性能。这对于执行耗时的计算任务特别有用,因为它可以防止在执行这些任务时界面冻结。

本项目演示了如何在 Web 应用中使用 Web Worker 来执行后台任务,以避免阻塞主线程并提高页面的响应性。 

轮询一个接口,不占用主线程,比如定时调用接口获取用户是否扫码

🚩 技术栈

  • HTML
  • JavaScript
  • Web Worker

🛠️ 功能

  • 使用 Web Worker 处理耗时的数据计算,避免阻塞主线程。
  • 主线程与 Worker 线程之间的消息传递。

 🤖 如何运行

  1. 克隆本仓库到本地。
  2. 在本地服务器上打开项目根目录(可以使用 Python 的 http.server 模块,或者 Node.js 的 http-server 包)或者使用vscode的插件(open lives erver)。
  3. 在浏览器中访问 index.html

♻️ 示例代码

主线程:main.js

  • 使用
    postMessage发送
  • 使用
    onmessage接受
// 创建一个新的 Worker
const myWorker = new Worker("worker.js");
// 向 Worker 发送数据
myWorker.postMessage("Hello, Worker!");
// 接收来自 Worker 的消息
myWorker.onmessage = function (e) {console.log("Message received from worker:", e.data);
};

Worker 线程:worker.js 

// 监听来自主线程的消息
self.onmessage = function (e) {console.log("Worker: Message received from main script");const result = e.data * 2;// 向主线程发送消息postMessage(result);
};

⛑️ 注意事项 

  • Web Worker 无法访问 DOM。
  • 传递给 Worker 的数据是通过结构化克隆算法克隆的,Worker 不能直接操作原始数据。
  • 确保在支持 Web Worker 的环境中运行示例。

📝 参考资料

  • Web Workers MDN 文档
http://www.lryc.cn/news/318202.html

相关文章:

  • matlab 基操~
  • HTML5、CSS3面试题(一)
  • 图片压缩神器源码系统:无损画质 带完整的代码安装包以及搭建教程
  • 探索SOCKS5代理、代理IP、HTTP与网络安全
  • 【Python学习篇】Python基础入门学习——你好Python(一)
  • 【通信原理笔记】【二】随机信号分析——2.2 平稳随机过程
  • 新火种AI|GPT-4诞生1年,OpenAI把它放到了机器人上
  • 8-图像放大
  • java实现压缩文件夹(层级压缩)下载,java打包压缩文件夹下载
  • Visual Studio 2022 配置“Debug|x64”的 Designtime 生成失败。IntelliSense 可能不可用。
  • Pandas教程16:DataFrame列标题批量重命名+空df数据判断+列名顺序重排
  • React.FC介绍
  • 为什么要用scrapy爬虫库?而不是纯python进行爬虫?
  • C:数据结构王道
  • Compose UI 之 Buttons 按钮 IconButtons 图标按钮
  • 吴恩达机器学习笔记 二十一 迁移学习 预训练
  • Python中Pandas常用函数及案例详解
  • VR全景看房:超越传统的看房方式
  • pip 配置镜像加速安装
  • LUA语法复习总结
  • 某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)
  • Mac-自动操作 实现双击即可执行shell脚本
  • 人工智能入门之旅:从基础知识到实战应用(六)
  • Debezium日常分享系列之:Debezium2.5稳定版本之Mysql连接器的工作原理
  • Linux服务器,使用ssh登录时越来越慢,有时甚至出现超时的现象,解决方案
  • GPT-SoVITS开源音色克隆框架的训练与调试
  • C#十大排序总结
  • Vue首屏优化方案
  • SpringBoot使用log4j2将日志记录到文件及自定义数据库
  • vue+elementUI用户修改密码的前端验证