Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在react app中使用 web worker的方案,基于 creat-react-app脚手架,并且webapck 为 5.x

在react app中使用 web worker的方案,基于 creat-react-app脚手架,并且webapck 为 5.x

作者头像
拿我格子衫来
发布于 2024-12-28 02:29:11
发布于 2024-12-28 02:29:11
17400
代码可运行
举报
文章被收录于专栏:TopFETopFE
运行总次数:0
代码可运行

在src目录下创建 gcode.worker.js 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 禁用eslint
console.log("Worker 脚本已加载");

/* eslint-disable */
self.onmessage = function (event) {
  const { task, data } = event.data;
  console.log(task, "task");
  if (task === "heavyComputation") {
    const result = heavyComputation(data);
    self.postMessage(result);
  }
};

function heavyComputation(data) {
  let sum = 0;
  for (let i = 0; i < data.length; i++) {
    sum += data[i] * data[i];
    console.log(sum, "sum");
  }
  return sum;
}

改写 App.tsx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React, { useEffect, useState } from "react";

function App() {
  const [result, setResult] = useState(null);

  useEffect(() => {
    const worker = new Worker(new URL("./gcode.worker.js", import.meta.url));

    worker.onmessage = (event: any) => {
      console.log("从 Worker 收到的结果:", event.data);
      setResult(event.data);
    };

    const largeArray = Array.from({ length: 10000 }, () => Math.floor(Math.random() * 100));

    console.log("发送给 Worker 的数据:", largeArray);
    worker.postMessage({ task: "heavyComputation", data: largeArray });

    return () => {
      worker.terminate();
    };
  }, []);

  return (
    <div className="App">
      <h1>React Web Worker 示例</h1>
      <p>计算结果:{result !== null ? result : "计算中..."}</p>
      <p>主线程未被阻塞,页面依然可以正常操作!</p>
    </div>
  );
}

export default App;

效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web Workers 完全指南:从入门到实战
Web Workers 是 HTML5 提供的一项重要特性,它允许网页在主线程之外运行脚本,从而实现真正的多线程编程。通过 Web Workers,我们可以将耗时的计算任务放在后台线程中执行,避免阻塞主线程,提升应用的响应性能。
全栈若城
2025/02/21
2720
Web Workers 完全指南:从入门到实战
React中使用多线程—Web Worke
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。
前端柒八九
2024/03/07
5240
React中使用多线程—Web Worke
Web Worker 使用教程
JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。
ruanyf
2018/07/30
1.6K5
Web Worker 使用教程
Web Worker 性能优化初体验
背景 近期在做用户回放系统需求,其中有一环是从 indexedDB 中读取日志并做上报。然而,由于日志的数据量太大,计算处理 indexedDB 的数据比较耗时,容易造成阻塞,导致用户浏览器卡顿。为了解决这个问题,我们想了几种优化手段: 使用 Web Worker 读取数据并处理。 分片读取、定时轮询、异常重试。 对数据使用 gzip 压缩。 其中,由于没有实践的经验,使用 Web Worker 的时候也踩了一些坑。在这里对 Web Worker 的使用做一个小结。 基本介绍 我们都知道,JavaScrip
用户1097444
2022/06/29
1.2K0
Web Worker 性能优化初体验
关于HTML5的Web Worker你了解多少?
大家都知道,JavaScript是单线程的,也就是说,所有的任务只能在一个线程上完成,一次只能做一件事。前面的任务如果没有完成,后面就只能等着。所以,HTML5就提出了web Worker标准,表示JavaScript允许有多个线程,但是子线程完全受主线程的控制,并且子线程不能操作DOM,只有主线程可以操作DOM。所以 Web Worker 的最佳使用场景是执行一些开销较大的数据处理或计算任务,接下来我们就来具体的了解一下这个东西吧~
吴佳
2022/09/26
5220
Web Worker 常见使用问题和解决方案
Web Workers 是一种在 JavaScript 中创建并在后台运行的多线程方式,可以用于执行耗时的任务而不会阻塞主线程。但是在使用 Web Workers 时,需要注意一些限制和解决方案,其中包括同源策略。这意味着在 Web Worker 中,只能加载与当前页面在同一源下的脚本,否则会触发安全错误。
泯泷、
2024/03/09
4700
Web Worker:JavaScript 中的多线程
随着 Web 应用程序变得越来越复杂和要求越来越高,对高效响应式处理的需求变得越来越重要。JavaScript 是一种单线程语言,有时可能会难以处理繁重的计算任务,这可能会导致用户界面速度慢和应用程序无响应。但是,随着 Web Worker 的引入,JavaScript 获得了利用多线程的能力,从而提高了性能并增强了用户体验。在本文中,我们将深入探讨 Web Workers 的世界,并探讨它们如何在 JavaScript 中启用多线程。
SEO-juper
2023/11/23
9460
Web Worker 初探
以前我们总说,JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在HTML5提供了我们前端开发这样的能力 - Web Workers API,我们一起来看一看 Web Worker 是什么,怎么去使用它,在实际生产中如何去用它来进行产出。
前端下午茶
2018/10/22
1.1K0
Web性能优化之Worker线程(上).md
因为,最近有一个需求中,用到了Worker技术,然后经过一些调研和调试,成功的在项目中应用。虽然,有部分原因是出于「技术尝鲜」的角度才选择Worker进行性能优化。但是,「看懂了,会用了,领悟了」。这是不同的技术层面。
前端柒八九
2022/08/25
1.4K0
Web性能优化之Worker线程(上).md
打造多线程 Web
由于浏览器的限制,注定了每个网页只能在一个进程程当中运行, 而且,js又只能运行在一个线程当中. 所以, 作为一名开发者来说, 对于这样的结果就只能呵呵了. 如果你想进行高复杂度的运算, 基本上就可以go die了(只要运行, 你网页基本上就崩掉了). 当然,聪明的W3C早就知道developer心里的小猫腻. 推出了web worker 这个概念. 我们接下来,来正式接触一下 web worker吧. 初入web worker web worker 既然是一个线程. 那必定会设计到线程间的通信. 这里,w
villainhr
2018/07/03
4250
JavaScript进阶 - Web Workers与Service Worker
在现代Web开发中,前端性能优化是一个永恒的话题。Web Workers 和 Service Worker 是两种强大的技术,它们允许开发者在后台执行耗时任务,从而提高用户体验。本文将深入探讨这两种技术,分析常见问题,易错点,并提供代码示例,帮助你更好地理解和运用它们。
Jimaks
2024/07/11
2140
WebWorker
JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。
EchoROne
2022/08/15
3720
前端魔法堂:可能是你见过最详细的WebWorker实用指南
JavaScript从使用开初就一直基于事件循环的单线程运行模型,即使是成功进军后端开发的Nodejs也没有改变这一模型。那么对于计算密集型的应用,我们必须创建新进程来执行运算,然后执行进程间通信实现传参和获取运算结果。否则会造成UI界面卡顿,甚至导致浏览器无响应。 从功能实现来看,我们可以通过新增iframe加载同域页面来创建JSVM进程执行运算从而避免造成界面卡顿的问题。但存在如下问题:
^_^肥仔John
2020/12/18
2K0
前端魔法堂:可能是你见过最详细的WebWorker实用指南
Web多线程之WebWorkers
浏览器的js脚本运行一直都是单线程运行的,所以我们不需要考虑多线程同步加锁这种情况。但是当我们需要做一些比较耗时的计算时候如果还放在这个单线程里面,可以想象页面会卡主。
Jean
2021/08/10
1.1K0
Web多线程之WebWorkers
webpack异步加载_webpack配置按需加载
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
1.2K0
如何使用 Web Worker 处理大文件上传
大家好,我是猫头虎博主🐯。今天,我要带领大家探索一个非常有趣且实用的技术话题:如何使用 Web Worker 来提升大文件上传的速度。在前端开发中,大文件的上传可能会导致页面的响应变得缓慢,但幸运的是,我们有 Web Worker 这一利器可以解决这个问题。
猫头虎
2024/04/09
6820
如何使用 Web Worker 处理大文件上传
【译】使用 Web Workers 优化 JavaScript 应用程序性能
从简单的脚本语言到成为 Web 标准编程语言,JavaScript 已经走过了漫长的道路。时至今日,它已经被广泛用于构建服务器端应用程序,移动应用程序,桌面应用程序甚至数据库。
腾讯IVWEB团队
2020/06/28
2K0
web messaging与Woker分类:漫谈postMessage跨线程跨页面通信
iframe_contentWindow.postMessage(message, targetOrigin, [transfer]);
周陆军
2021/07/03
2.3K0
聊一聊如何像大神一般玩转 JavaScript 的高级用法
众所周知,JavaScript是一种非常流行的编程语言,它已经成为了网页开发的必备技能。但是,在我们从事JavaScript编程的时候,我们却没有完全发掘和利用它的全部潜力。在本文中,我们将分享一些高级的JavaScript技巧,希望帮助掘友们更好地理解和掌握JavaScript编程。
前端达人
2023/09/21
2580
聊一聊如何像大神一般玩转 JavaScript 的高级用法
Web Worker
众所周知,JavaScript 是单线程的语言。当我们面临需要大量计算的场景时(比如视频解码等),UI 线程就会被阻塞,甚至浏览器直接卡死。现在前端遇到大量计算的场景越来越多,为了有更好的体验,HTML5 中提出了 Web Worker 的概念。Web Worker 可以使脚本运行在新的线程中,它们独立于主线程,可以进行大量的计算活动,而不会影响主线程的 UI 渲染。当计算结束之后,它们可以把结果发送给主线程,从而形成了高效、良好的用户体验。Web Worker 是一个统称,具体可以细分为普通的 Worker、SharedWorker 和 ServiceWorker 等,接下来我们一一介绍其使用方法和适合的场景。
政采云前端团队
2022/04/27
1.1K0
Web Worker
相关推荐
Web Workers 完全指南:从入门到实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验