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

news2024/12/24 11:40:55

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.coloradmin.cn/o/1518114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# OpenCvSharp 图片批量改名

目录 效果 项目 代码 下载 C# OpenCvSharp 图片批量改名 效果 项目 代码 using NLog; using OpenCvSharp; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; namespace OpenCvSharp_Demo { publi…

国创证券策略:股指预计维持震荡格局 关注汽车、通信设备等板块

国创证券指出,近期两市指数持续反弹创新高,但沪指现已率先出现滞涨状况,一起均已进入阻力重压区。不过当时技术形状上坚持较好,可持续做多,一旦跌破重要支撑如沪指的3030点,则需降仓防卫,防止指…

空间、向量和序列

摘要: 在数学中,“空间”这一概念超越了简单的集合含义,它通过对集合添加特定的结构和运算规则,构建出了具有丰富内涵的数学对象。在这些空间中,数学对象(如向量、点、函数等)是空间的元素&…

手写Mybatis自动填充插件

目录 一、Mybatis插件简介🥙二、工程创建及前期准备工作🥫实现代码配置文件 三、插件核心代码实现🍗四、测试🥓 一、Mybatis插件简介🥙 Mybatis插件运行原理及自定义插件_简述mybatis的插件运行原理,以及如何编写一个…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-2、线条平滑曲面且可通过面观察柱体变化(二)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

类比半导体基于高边驱动方案选型

一、高边驱动简介 高边驱动,也称之为高边开关,其主要用于车内负载的驱动与开关,并对负载进行保护和诊断。高边驱动以高可靠性、灵活性、低功耗以及小型轻量等特点,正逐渐替代传统的保险丝、继电器等方案。 随着新能源汽车的渗透…

【蓝桥杯-单片机】基础模块:数码管

文章目录 【蓝桥杯-单片机】基础模块:数码管01 数码管原理图什么是位选和段选共阳极数码管和共阴极数码管的区分(1)共阳极数码管(Common Anode):(2)共阴极数码管(Common …

ThingsBoard Edge 安装部署(Docker)

文章目录 一、概述1.官方文档2.部署说明3.安装准备3.1. 克隆服务器3.2.安装 Docker3.3.安装 docker-compose3.4.安装 PostgreSQL3.5.创建 Edge 实例 二、Docker Compose 方式部署1.创建 docker-compose.yml2.运行容器3.访问 Edge 三、Docker 直接部署1.创建数据库2.运行容器3.访…

Cassandra经常被问到的问题 Java面试题

1. 请简要介绍一下Cassandra是什么,以及它的主要特点是什么? Cassandra是一个高度可扩展、分布式的NoSQL数据库系统,最初由Facebook开发并开源。它设计用于处理大规模数据,具有以下主要特点: 分布式架构:C…

浏览器事件循环机制、宏任务和微任务

浏览器的事件循环机制(重要) image-20230608154453933 执行顺序如下: 同步任务:进入主线程后,立即执行。 异步任务:会先进入 Event Table;等时间到了之后,再进入 任务队列 &#x…

探索 Spring 框架:企业级应用开发的强大工具

CSDN-个人主页:17_Kevin-CSDN博客 收录专栏:《Java》 目录 一、引言 二、Spring 框架的历史 三、Spring 框架的核心模块 四、Spring 框架的优势 五、Spring 框架的应用场景 六、结论 一、引言 在当今数字化时代,企业级应用开发的需求日…

腾讯春招后端一面(八股篇)

前言 前几天在网上发了腾讯面试官问的一些问题,好多小伙伴关注,今天对这些问题写个具体答案,博主好久没看八股了,正好复习一下。 面试手撕了三道算法,这部分之后更,喜欢的小伙伴可以留意一下我的账号。 1…

【刷题训练】LeetCode125. 验证回文串

验证回文串 题目要求 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出:true 解释:“amanaplanacanalpanama” 是回文串。 示例 2: 输入:s “race a car” 输出:false 解释:“rac…

elasticsearch8.12 分词器安装

分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 分词器下载地址 analysis-ik Releases infinilabs/analysis-ik GitHub 一个简便 安装方式 安装完成之后 会提示重启,重启es即可 ./bin/elasticsearch-pl…

19C 19.22 RAC 2节点一键安装演示

Oracle 一键安装脚本,演示 2 节点 RAC 一键安装过程(全程无需人工干预):(脚本包括 GRID/ORALCE PSU/OJVM 补丁自动安装) ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 脚本第三代支持 N 节点…

Excel小技巧 (3) - 如何取整

1. 四舍五入 Round(对象,小数点后位数) 结果 123.1 2.向上取整 Roundup(对象,小数点后位数) 结果:123.2 3.向下取整 Round(对象,小数点后位数) 结果123.…

每日一题 2312卖木头快

2312. 卖木头块 题目描述: 给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽。同时给你一个二维整数数组 prices ,其中 prices[i] [hi, wi, pricei] 表示你可以以 pricei 元的价格卖一块高为 hi 宽为 wi 的矩形木块。 每一次操作中&am…

AJAX 05 axios拦截器、数据管理平台

AJAX 学习 AJAX 05 黑马头条-数据管理平台项目准备业务1:验证码登录bootstrap提示框实际业务中的验证码登录token 【注】HTML遗落的知识【注】JS遗漏的知识业务2:个人信息设置 & axios拦截器axios请求拦截器axios响应拦截器 业务3:发布文…

网络架构层_服务器上下行宽带

网络架构层_服务器上下行宽带 解释一 云服务器ECS网络带宽的概念、计费、安全及使用限制_云服务器 ECS(ECS)-阿里云帮助中心 网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量,带宽数值越大表示传输能力越强,即在单位…

mysql 主从延迟分析

一、如何分析主从延迟 分析主从延迟一般会采集以下三类信息。 从库服务器的负载情况 为什么要首先查看服务器的负载情况呢?因为软件层面的所有操作都需要系统资源来支撑。 常见的系统资源有四类:CPU、内存、IO、网络。对于主从延迟,一般会…