概述
JavaScript的执行环境是单线程的,也就是一次只能执行一个任务。如果遇到多个任务时,只能排队依次执行。
在HTML5中,可以使用Web Worker创建一个后台线程执行一个耗时任务,而不会影响页面响应。
简单使用
Web Worker技术基本原理就是:在当前JavaScript的主线程中,使用Worker()构造函数新建一个worker实例,然后加载某一个JavaScript文件,发送给一个后台线程来处理(注意,这里是后台线程)。
worker.html
JavaScript的执行环境是单线程的,也就是一次只能执行一个任务。如果遇到多个任务时,只能排队依次执行。
在HTML5中,可以使用Web Worker创建一个后台线程执行一个耗时任务,而不会影响页面响应。
Web Worker技术基本原理就是:在当前JavaScript的主线程中,使用Worker()构造函数新建一个worker实例,然后加载某一个JavaScript文件,发送给一个后台线程来处理(注意,这里是后台线程)。
worker.html
<!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>
worker.js
onmessage = function(e) { //接收前台发来的数据 var d = e.data; console.log("后台线程收到:" + d); var str = d.split("").reverse().join(""); postMessage(str); };
worker.html
<!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>
worker.js
var i = 0; function handleTask() { i++; console.log("handle:" | i); postMessage(i); } setInterval(handleTask, 1000);
到此这篇关于HTML5 Web Worker(多线程处理)的文章就介绍到这了
栏 目:HTML5
本文地址:https://fushidao.cc/wangyezhizuo/205.html
申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。
如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。
联系QQ:1205677645 | 邮箱:1205677645@qq.com
Copyright © 2018-2024 科站长 版权所有冀ICP备14023439号