避免阻塞主线程 —— 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 的环境中运行示例。

📝 参考资料

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 06:48:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 06:48:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 06:48:03       82 阅读
  4. Python语言-面向对象

    2024-03-15 06:48:03       91 阅读

热门阅读

  1. 3.14word直播知识点

    2024-03-15 06:48:03       35 阅读
  2. spotbugs不兼容IDEA2023.2

    2024-03-15 06:48:03       42 阅读
  3. 速盾cdn:服务器ip能直接加cdn吗

    2024-03-15 06:48:03       43 阅读
  4. Rust 进阶

    2024-03-15 06:48:03       34 阅读
  5. CSS基础

    CSS基础

    2024-03-15 06:48:03      36 阅读
  6. Error Logs on SQL, Mysql, etc

    2024-03-15 06:48:03       38 阅读