Html5 web worker 的总结
2016-03-28 15:36
741 查看
1.使用场景
a.如果开发人员创建的web应用程序需要执行一些后台的数据处理,但是又不希望这些数据处理任务影响web本身的交互性,那么可以通过web workers生成一个web workers去执行数据处理任务,同时添加一个事件监听器去监听它发出的消息。
b.另外一个用途就是监听后台服务器广播的新闻消息,收到后台服务器的消息后,将其显示在web页面上。在与后台服务器的对话场景中,web workers可能会使用到web sockets或者server-sent事件。
2.web workers的使用方法
Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage。
新线程中:
主线程中:
在主线程中使用web workers前,首先应该检测浏览器的支持情况,
通过这个例子我们可以看出使用web worker主要分为以下几部分
WEB主线程:
1.通过 worker = new Worker( url ) 加载一个JS文件来创建一个worker,同时返回一个worker实例。
2.通过worker.postMessage( data ) 方法来向worker发送数据。
3.绑定worker.onmessage方法来接收worker发送过来的数据。
4.可以使用 worker.terminate() 来终止一个worker的执行。
worker新线程:
1.通过postMessage( data ) 方法来向主线程发送数据。
2.绑定onmessage方法来接收主线程发送过来的数据。
3.由于web workers没有访问document对象的权限,所以在worker中必须使用importScripts来导入其它的JavaScript文件。
importScripts(“example.js”)
总结:
我们可以做什么:
1.可以加载一个JS进行大量的复杂计算而不挂起主进程,并通过postMessage,onmessage进行通信
2.可以在worker中通过importScripts(url)加载另外的脚本文件
3.可以使用 setTimeout(), clearTimeout(), setInterval(), and clearInterval()
4.可以使用XMLHttpRequest来发送请求
5.可以访问navigator的部分属性
有哪些局限性:
1.不能跨域加载JS
2.worker内代码不能访问DOM
3.各个浏览器对Worker的实现不大一致,例如FF里允许worker中创建新的worker,而Chrome中就不行
4.不是每个浏览器都支持这个新特性
关于web workers的相关文章:
http://blog.jobbole.com/30592/
http://blog.jobbole.com/30445/
a.如果开发人员创建的web应用程序需要执行一些后台的数据处理,但是又不希望这些数据处理任务影响web本身的交互性,那么可以通过web workers生成一个web workers去执行数据处理任务,同时添加一个事件监听器去监听它发出的消息。
b.另外一个用途就是监听后台服务器广播的新闻消息,收到后台服务器的消息后,将其显示在web页面上。在与后台服务器的对话场景中,web workers可能会使用到web sockets或者server-sent事件。
2.web workers的使用方法
Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage。
新线程中:
//worker.js onmessage = function(evt){ var d = evt.data; //通过evt.data获得发送来的数据 postMessage(d); //将获取到的数据发送回主线程 }
主线程中:
<script type="text/javascritp"> //web页主线程,创建一个worker对象并向它传递将在新线程中执行的脚本的URL var worker = new worker("worker.js"); //向worker发送数据 worker.postMessage("hello world"); //接收worker传过来的数据函数 worker.onmessage = function(evt){ //输出worker发送过来的数据 console.log(evt.data); } </script>
在主线程中使用web workers前,首先应该检测浏览器的支持情况,
通过这个例子我们可以看出使用web worker主要分为以下几部分
WEB主线程:
1.通过 worker = new Worker( url ) 加载一个JS文件来创建一个worker,同时返回一个worker实例。
2.通过worker.postMessage( data ) 方法来向worker发送数据。
3.绑定worker.onmessage方法来接收worker发送过来的数据。
4.可以使用 worker.terminate() 来终止一个worker的执行。
worker新线程:
1.通过postMessage( data ) 方法来向主线程发送数据。
2.绑定onmessage方法来接收主线程发送过来的数据。
3.由于web workers没有访问document对象的权限,所以在worker中必须使用importScripts来导入其它的JavaScript文件。
importScripts(“example.js”)
总结:
我们可以做什么:
1.可以加载一个JS进行大量的复杂计算而不挂起主进程,并通过postMessage,onmessage进行通信
2.可以在worker中通过importScripts(url)加载另外的脚本文件
3.可以使用 setTimeout(), clearTimeout(), setInterval(), and clearInterval()
4.可以使用XMLHttpRequest来发送请求
5.可以访问navigator的部分属性
有哪些局限性:
1.不能跨域加载JS
2.worker内代码不能访问DOM
3.各个浏览器对Worker的实现不大一致,例如FF里允许worker中创建新的worker,而Chrome中就不行
4.不是每个浏览器都支持这个新特性
关于web workers的相关文章:
http://blog.jobbole.com/30592/
http://blog.jobbole.com/30445/
相关文章推荐
- HTML5中在客户端验证文件上传的大小
- html5 web数据存储
- Canvas 在高清屏下绘制图片变模糊的解决方法
- 原生js结合html5制作小飞龙的简易跳球
- HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
- 三个不常见的 HTML5 实用新特性简介
- 低版本IE正常运行HTML5+CSS3网站的3种解决方案
- js+HTML5实现canvas多种颜色渐变效果的方法
- javascript+HTML5的Canvas实现Lab单车动画效果
- javascript+html5实现绘制圆环的方法
- javascript html5实现表单验证
- HTML5实现微信拍摄上传照片功能
- JavaScript+html5 canvas制作的百花齐放效果完整实例
- jQuery+HTML5加入购物车代码分享
- jQuery mobile 移动web(6)
- 基于Jquery和html5的7款个性化地图插件
- 实现音乐播放器的代码(html5+css3+jquery)
- 2014 HTML5/CSS3热门动画特效TOP10
- jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码