<HeadFirst_HTML5> O'REILLY_Chap.10(完)_Web工作线程

来源:互联网 发布:淘宝的差评多久会生效 编辑:程序博客网 时间:2024/05/16 14:16

<HeadFirst_HTML5> O’REILLY_Chap.10(完)_Web工作线程

本博客的FollowMeReading系列初衷是在线的读书笔记. 为方便后期查阅, 故写成博客形式, 使用关键字查询便可以快读的找到相关的内容.

FollowMeReading系列所选的书籍一般选自O’REILLY或Apress出版社, 尽量保证笔记内容的权威性.

FollowMeReading系列的博客标题格式为: <书名> 出版社章节数章节名, 方便大家在纸质版书籍中查找.

FollowMeReading系列博文中的内容大部分是原文, 非原文部分前面将有’博主’字样提醒.

感谢<HeadFirst_HTML5>作者 Eric Freeman & Elisabeth Robson
感谢<HeadFirst_HTML5>翻译 林琪 张伶

正文

原文

BULLTE POINTS(要点):

  • 如果没有Web工作线程, JavaScript是单线程的, 这说明它一次只能做一件事情.

  • 如果交给一个JavaScript程序太多的工作, 你可能会收到一个”slow script”(脚本运行缓慢)对话框.

  • Web工作线程在一个单独的线程处理任务, 所以主JavaScript代码可以继续运行, 用户界面可以保持响应.

  • Web工作线程的代码放在与页面代码不同的一个单独的文件中.

  • Web工作线程不能访问页面代码中的函数或DOM.

  • 页面中的代码与Web工作线程通过消息通信.

  • 要向一个工作线程发送消息, 可以使用 postMessage.

  • 可以通过 postMessage 向工作线程发送字符串和对象, 但不能向工作线程发送函数.

  • 可以将工作线程的 onmessage 属性设置为一个处理函数, 来接收由工作线程返回的消息.

  • 工作线程将其 onmessage 属性设置为一个处理函数, 来接收页面代码发送的消息.

  • 一个工作线程准备发回一个结果时, 会调用 postMessage , 并传入结果作为参数.

  • 工作线程结果封装在一个事件对象中, 并置于 data 属性中.

  • 可以使用 event.target 属性查找哪个工作线程发出了消息.

  • 消息在主页面代码和工作线程之间会复制, 而非共享.

  • 可以使用多个工作线程完成能分解为多个任务的大规模计算, 如计算一个分形可视化图像或对光线跟踪图像.

  • 每个工作线程在它自己的线程中运行, 所以你的计算机有一个多核处理器, 工作线程会并行运行, 这会提高计算的速度.

  • 可以从页面代码调用 worker.terminate() 来终止一个线程. 这会中止工作线程脚本. 工作线程还可以调动 close() 让自己停止工作.

  • 工作线程还有一个 oneerror 属性. 可以把这个属性设置为一个错误处理函数, 如果你的工作线程存在一个脚本错误就会调用这个处理函数.

  • 要在工作线程文件中包含和使用JavaScript库, 可以使用 importScript.

  • 还可以使用 importScript 来利用JSONP. 要在工作线程文件中实现传入URL查询的回调.

  • 工作线程不能访问DOM或主代码中的函数, 但是可以使用 XMLHttpRequest 和本地存储.

0 0