`
bsr1983
  • 浏览: 1100121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第八章 Web Workers API

 
阅读更多

 

HTML5 Web Worker可以让Web应用程序具备后台处理能力。它对多线程的支持性非常好,因此,使用了HTML5JavaScript应用程序可以充分利用多核CPU带来的优势。将耗时长的任务分配给HTML5 Web Workers执行,可以避免弹出脚本运行缓慢的警告。

       Web Workers中执行的脚本不能访问该页面的window对象(window.document),换句话说,Web Workers不能直接访问Web页面和DOM API。虽然Web Workers不会导致浏览器UI停止响应,但是仍然会消耗CPU周期,导致系统反应速度变慢。

8.1 HTML5 Web Workers的浏览器支持情况

8.2 使用HTML5 Web Workers API

       Web Workers的使用方法非常简单,只需创建一个Web Workers对象,并传入希望执行的JavaScript文件即可。另外,在页面中再设置一个事件监听器,用来监听由Web Worker发来的消息和错误信息。如果想要在页面与Web Workers之间建立通信,数据需通过postMessage函数传递。对于Web Worker Javascript中的代码也是如此:必须通过设置事件处理程序来处理发来的消息和错我信息,通过postMessage函数实现与页面的数据交互。

8.2.1 浏览器支持性检查

8.2.2 创建HTML5Web Workers

       Web Workers初始化时会接受一个Javascript文件的URL地址,其中包含了供Worker执行的代码。这段代码会设置事件监听器,并与生成Worker的容器进行通信。Javascript文件的URL可以是相对或者绝对路径,只要是同源(相同协议、主机和端口)即可:

       worker=new Worker(“echoWorker.js”)

8.2.3 多个Javascript文件的加载与执行

       对于由多个Javascript文件组成的应用程序来说,可以通过包含<script>元素的方式,在页面加载的时候同步加载Javascript文件。然而,由于Web Workers没有访问document对象的权限,所以在Worker中必须使用另外一种方法导入其他的Javascript文件——importScripts:

       importScripts(“helper.js”);

       导入的Javascript文件只会在某一个已有的Worker中加载和执行。多个脚本的导入同样也可以使用importScript函数,它们会按顺序执行:

       importScripts(“helper.js”,”anotherHelper.js”);

8.2.4 HTML5 Web Workers通信

       Web Work而一旦生成,就可以使用postMessage API传送和接收数据。postMessage API还支持跨框架和跨窗口通信。大多数Javascript对象都可以通过postMessage发送,但含有循环引用的除外。

8.3 编写主页

8.3.1 处理错误

       HTML5 Web Workers脚本中未处理的错误会引发Web Workers对象的错误事件。特别是在调试用到了Web Workers 的脚本时,对错误事件的监听就显得尤为重要。

8.3.2 HTML5 Web Works

       Web Workers不能自行终止,但能够被启用它们的页面所终止。开发人员都希望在不再需要Web Workers时回收其所占资源,比如当Web Workers通知主页它已执行完成的时候。

       终止Web Workers可以调用terminate函数来实现。被终止的Web Workers将不再能响应任何消息或者执行任何其他的计算。终止之后,Worker不能被重新启动,但可以使用同样的URL创建一个新的Worker

8.3.3 HTML5 Web Workers的嵌套使用

       WorkerAPI能够在Web Workers脚本中嵌套使用,以创建子Worker:

       var subWorker=new Worker(“subWorker.js”);

8.3.4 使用定时器

       虽然HTML5 Web Workers不能访问window对象,但是它可以与属于window对象的JavaScript定时器API协作:

       var t=setTimeout(postMessage,2000,”delayed message”);

8.3.5 示例代码

分享到:
评论

相关推荐

    HTML5高级程序设计第二版

    第1章 HTML5概述 第2章 Canvas API 第3章 音频和视频 第4章 GELOLCATION API 第5章 Communication API ...第8章 Web Workers API 第9章 Web Storage API 第10章 构建离线Web应用 第11章 HTML5未来展望

    HTML5高级程序设计

    第8章 web workers api 158 8.1 html5 web workers的浏览器支持情况 158 8.2 使用html5 web workers api 159 8.2.1 浏览器支持性检查 159 8.2.2 创建html5 web workers 160 8.2.3 多个javascript文件的加载与...

    完整版《HTML5高级程序设计》2

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与执行 ...

    完整版《HTML5高级程序设计》4

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与执行 ...

    完整版《HTML5高级程序设计》5

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与执行 ...

    完整版《HTML5高级程序设计》3

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与执行 ...

    HTML5高级程序设计.part5

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与...

    HTML5高级程序设计.part4

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与...

    HTML5高级程序设计.part1

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与...

    HTML5高级程序设计.part2

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与...

    HTML5高级程序设计.part3

    第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性检查 159 8.2.2 创建HTML5 Web Workers 160 8.2.3 多个JavaScript文件的加载与...

    HTML5与CSS3

    第八章离线应用程序 第九章通信API 第十章使用Web Workers处理线程 第十一章获取地理位置的信息 第十二章CSS 3概述 第十三章选择器 第十四章使用选择器在页面中插入内容 第十五章文字与字体相关样式 第十六章盒相关...

    HTML5精粹:利用HTML5开发令人惊奇的Web站点和革命性应用 pdf扫描版

    第8章探讨了HTML5中的拖放操作及其API;第9章介绍了HTML5中的地理位置信息及其API;第10章讲解了HTML5中的各种Web存储技术,以及Web存储API;第11章阐述了索引数据库的具体操作、实现原理,以及它的API;第12章讲解...

    HTML5程序设计(第2版).[荷]Peter Lubbers(带详细书签).pdf

    第8章 Forms API 166 8.1 HTML5 Forms概述 166 8.1.1 HTML Forms与XForms 166 8.1.2 功能性表单 167 8.1.3 HTML5 Forms的浏览器支持情况 167 8.1.4 输入型控件目录 168 8.2 使用HTML5 Forms API 172 8.2.1 新...

    HTML5用户指南

    第8章 拖放  深入拖动  拖动数据的互操作性  如何拖动任意元素  添加定制的拖动图标  可访问性  小结 第9章 geolocation  为访问者标记一个别针  api方法  抓住你:成功处理程序  它到底如何工作:这是...

    HTML5 and JavaScript Web Apps

    8. Device Orientation API 9. Web Workers HTML5 and JavaScript Web Apps is about building web applications with HTML5 and W3C specifications that are widely supported across all devices and browsers. ...

    HTML5开发精要与实例详解(完整版源代码含说明文档)

    第8章用2个案例讲解了如何利用web workers实现多线程处理;第9章用1个案例讲解了如何利用geolocation api来获取地理位置信息;第10~13章分别讲解了socket通信框架jwebsocket、统计图制作插件rgraph、三维web开发技术...

    HTML, XHTML, and CSS Bible, 5th Edition.pdf

    第8章用2个案例讲解了如何利用web workers实现多线程处理;第9章用1个案例讲解了如何利用geolocation api来获取地理位置信息;第10~13章分别讲解了socket通信框架jwebsocket、统计图制作插件rgraph、三维web开发技术...

    java8看不到源码-edward:硕士论文:利用网络浏览器的志愿者计算平台

    webworkers 完成。 志愿者脚本已经过现代 Firefox 和 Chrome 非移动浏览器的测试。 UI 是用 react.js 编写的,但这是我第一次尝试使用 react,目前代码真的一团糟。 Shell 客户端不是最新的,目前无法工作。 平台...

    javascript权威指南(第六版)

    13. JavaScript in Web Browsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 13.1 Client-Side JavaScript 307 13.2 Embedding JavaScript in HTML 311 13.3 ...

Global site tag (gtag.js) - Google Analytics