HTML5 Web Workers 使用案例

3 篇文章 0 订阅
2 篇文章 0 订阅

1 什么是Web Workers?

    当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

2 使用案例

   webworkers.html文件

   

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- web worker是运行在后台的javascript,不会影响页面的性能 -->
    <p>计数:<output id="result"></output></p>
    <button οnclick="startWorker()">开始worker</button>
    <button οnclick="endWorker()">停止worker</button>  
    <br><br>
    <script type="text/javascript">
       var w;       
       function startWorker(){
    	   if(typeof(Worker)!="undefined"){//浏览器支持web worker
    		   if(typeof(w)=="undefined"){//w是未定义的,还没有开始计数		
    			   w = new Worker("webworker.js");//创建一个Worker对象,利用Worker的构造函数
    		   }
    	       //onmessage是Worker对象的properties
    		   w.onmessage = function(event){//事件处理函数,用来处理后端的web worker传递过来的消息
    			   document.getElementById("result").innerHTML=event.data;
    		   };
    	   }else{
    		   document.getElementById("result").innerHTML="sorry,your browser does not support web workers";
    	   }
       }  
       function endWorker(){
          w.terminate();//利用Worker对象的terminated方法,终止
          w=undefined;
       }
    </script>
</body>
</html>
   在后台运行的web worker js文件,webworker.js

var i = 0;

function timeCount(){
	i = i + 1;
	postMessage(i);//postMessage是Worker对象的方法,用于向html页面回传一段消息
	setTimeout("timeCount()",500);//定时任务
}

timeCount();//加1计数,每500毫秒调用一次
3 效果截图

   

4 参考链接

    http://blog.csdn.net/liuwengai/article/details/51674274

   http://www.w3school.com.cn/html5/html_5_webworkers.asp

5 扩展延伸

   http://blog.teamtreehouse.com/using-web-workers-to-speed-up-your-javascript-applications

   http://www.html5rocks.com/en/tutorials/workers/basics/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值