设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 101|回复: 15

HTML5 Web Worker(多线程处理)

[复制链接]

3

主题

49

回帖

165

积分

注册会员

积分
165
发表于 2024-4-20 08:07:40 | 显示全部楼层 |阅读模式
概述

JavaScript的执行环境是单线程的,也就是一次只能执行一个任务。如果遇到多个任务时,只能排队依次执行。
在HTML5中,可以使用Web Worker创建一个后台线程执行一个耗时任务,而不会影响页面响应。
简单使用

Web Worker技术基本原理就是:在当前JavaScript的主线程中,使用Worker()构造函数新建一个worker实例,然后加载某一个JavaScript文件,发送给一个后台线程来处理(注意,这里是后台线程)。
worker.html
  1. <!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <meta charset="utf-8">
  5.                 <title></title>
  6.                 <script>
  7.                         //创建worker
  8.                         var worker = new Worker("worker.js");
  9.                         //向后台线程发送数据
  10.                         worker.postMessage("hello world");
  11.                         //监听后台线程返回的数据
  12.                         worker.onmessage = function(e) {
  13.                                 console.log("前台线程收到:" + e.data);
  14.                         };
  15.                 </script>
  16.         </head>
  17.         <body>
  18.         </body>
  19. </html>
复制代码
worker.js
  1. onmessage = function(e) {
  2.         //接收前台发来的数据
  3.         var d = e.data;
  4.         console.log("后台线程收到:" + d);
  5.         var str = d.split("").reverse().join("");
  6.         postMessage(str);
  7. };
复制代码

处理复杂数据

worker.html
  1. <!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <meta charset="utf-8">
  5.                 <title></title>
  6.                 <script>
  7.                         var worker;
  8.                         window.onload = function() {
  9.                                 var start = document.getElementById("start");
  10.                                 var stop = document.getElementById("stop");
  11.                                 start.onclick = function() {
  12.                                         worker = new Worker("worker.js")
  13.                                         worker.onmessage = function(e) {
  14.                                                 console.log("前台接收:" + e.data);
  15.                                         }
  16.                                 }
  17.                                 stop.onclick = function() {
  18.                                         worker.terminate();
  19.                                 }
  20.                         }
  21.                 </script>
  22.         </head>
  23.         <body>
  24.                 <button id="start">开始</button>
  25.                 <button id="stop">停止</button>
  26.         </body>
  27. </html>
复制代码
worker.js
  1. var i = 0;

  2. function handleTask() {
  3.         i++;
  4.         console.log("handle:" | i);
  5.         postMessage(i);
  6. }
  7. setInterval(handleTask, 1000);<font face="Tahoma"><span style="white-space: normal;"> </span></font>
复制代码
到此这篇关于HTML5 Web Worker(多线程处理)的文章就介绍到这了,更多相关HTML5 Web Worker内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1

主题

52

回帖

128

积分

注册会员

积分
128
发表于 2024-5-23 19:59:53 | 显示全部楼层
我不太确定,可能需要再确认一下。

1

主题

52

回帖

124

积分

注册会员

积分
124
发表于 2024-6-8 10:35:50 | 显示全部楼层
这个话题真是有趣,我也对它感兴趣。

0

主题

45

回帖

91

积分

注册会员

积分
91
发表于 2024-6-15 01:50:14 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!

3

主题

49

回帖

165

积分

注册会员

积分
165
发表于 2024-7-6 09:14:06 | 显示全部楼层
我不太确定,可能需要再确认一下。

0

主题

69

回帖

139

积分

注册会员

积分
139
发表于 2024-7-31 17:02:12 | 显示全部楼层
感谢分享,受益匪浅!

1

主题

51

回帖

125

积分

注册会员

积分
125
发表于 2024-8-1 22:01:45 | 显示全部楼层
确实牛逼
  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:36
  • 最近打卡:2024-06-14 18:01:34

7

主题

64

回帖

276

积分

中级会员

积分
276
发表于 2024-8-6 06:10:08 | 显示全部楼层
谢谢你分享这个信息
  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:21
  • 最近打卡:2024-04-29 11:53:39

0

主题

65

回帖

164

积分

注册会员

积分
164

热心会员付费会员

发表于 2024-8-11 02:52:30 | 显示全部楼层
确实牛逼

1

主题

67

回帖

157

积分

注册会员

积分
157
发表于 2024-8-21 01:12:04 | 显示全部楼层
太棒了!感谢分享这个信息!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 12:02 , Processed in 0.105694 second(s), 28 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表