京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

HTML5 Web Worker(多线程处理)

2024-11-3 03:10| 发布者: c2688| 查看: 63| 评论: 0

摘要:  概述 JavaScript的实行环境是单线程的,也就是一次只能实行一个任务。如果碰到多个任务时,只能列队依次实行。 在HTML5中,可以利用Web Worker创建一个后台线程实行一个耗时任务,而不会影响页面相应。 简单利

 概述

JavaScript的实行环境是单线程的,也就是一次只能实行一个任务。如果碰到多个任务时,只能列队依次实行。

在HTML5中,可以利用Web Worker创建一个后台线程实行一个耗时任务,而不会影响页面相应。

简单利用

Web Worker技能根本原理就是:在当前JavaScript的主线程中,利用Worker()构造函数新建一个worker实例,然后加载某一个JavaScript文件,发送给一个后台线程来处理(注意,这里是后台线程)。

worker.html

[code] <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> //创建worker var worker = new Worker("worker.js"); //向后台线程发送数据 worker.postMessage("hello world"); //监听后台线程返回的数据 worker.onmessage = function(e) { console.log("前台线程收到:" + e.data); }; </script> </head> <body> </body> </html> [/code]

worker.js

[code] onmessage = function(e) { //接收前台发来的数据 var d = e.data; console.log("后台线程收到:" + d); var str = d.split("").reverse().join(""); postMessage(str); }; [/code]

在这里插入图片描述

处理复杂数据

worker.html

[code] <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> var worker; window.onload = function() { var start = document.getElementById("start"); var stop = document.getElementById("stop"); start.onclick = function() { worker = new Worker("worker.js") worker.onmessage = function(e) { console.log("前台接收:" + e.data); } } stop.onclick = function() { worker.terminate(); } } </script> </head> <body> <button id="start">开始</button> <button id="stop">停止</button> </body> </html> [/code]

worker.js

[code] var i = 0; function handleTask() { i++; console.log("handle:" | i); postMessage(i); } setInterval(handleTask, 1000); [/code]

到此这篇关于HTML5 Web Worker(多线程处理)的文章就介绍到这了,更多相关HTML5 Web Worker内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!


来源:https://www.jb51.net/html5/862727.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 03:34 , Processed in 0.030849 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部