html5 workers线程

html5之前,javascript脚本都是在单线程中执行的,也就是说如果js运行时间过长,除了等待什么也干不了,甚至卡死。创建一个worker后台线程,这样就不影响前台的渲染了。
简单演示主页面

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>html5 workers</title>
 
</head>
 
<body>
<span id="span1">5</span>
<div id="result">结果</div><script type="text/javascript"> var value = +document.getElementById('span1').innerHTML; var work = new Worker('work.js'); work.onmessage = function(event){ 	document.getElementById('result').innerHTML = event.data; } window.onload = function(){ 	work.postMessage(value); } </script> </body>
</html>


work.js页面代码

onmessage = function(event){ 	var result = event.data + 10;	
	postMessage(result); }

示例简单说明
建立一个后台线程很简单,只要建立一个带有js文件参数的Worker()实例。运行上面内容,”结果”会被”15″替换。
主页面和js页面都通过onmessage()事件句柄来接收数据,此方法可传入一个event事件对象,event.data就是实际传递的数据。
主页面和js页面都通过html5的postMessage方法发送数据。

注意事项
后台线程脚本文件不能访问document对象和window对象,如果访问会报错。主页面方法都是work实例调用的,而在线程脚本中是直接调用的。

其他相关
为了节省资源,work使用完毕后最好关闭,使用close()方法,work.close()。关闭后无法打开,只能新建。
线程可以嵌套。
如需在线程js中引入其他Js文件,可以使用importScript(urls)方法

importScript('script1.js','js\script2.js');

本文地址http://www.chengxuyuans.com/web_technology/10075.html

转载于:https://my.oschina.net/u/142988/blog/31887

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值