—个worker是一个使用构造函数(如Worker())来创建的对象,在一个命名的JS文件里面运行,这个文件包含了在worker线程中运行的代码。Workers不同于现在的window,是在另一个全局上下文中运行的。在专用的Workers例子中,是由DedicatedWorkerGlobalScope对象代表这个上下文环境。标准Workers是由单个脚本使用的,共享Workers使用的是SharedWorkerGlobalScope。
在worker线程里面,可以运行任何你喜欢的代码,当然也有一些例外。例如,不能直接操作worker里面的DOM,也不能使用window对象的一些默认方法和属性。但是,可以使用window下许多可用的项目,包括WebSockets、类似IndexedDB和Firefox OS独有的Data Store API这样的数据存储机制。
在HTML5中,创建后台线程的步骤十分简单,只需要在Worker类的构造器中,将需要在后台线程中执行主脚本文件的URL地址作为参数,然后创建Worker对象就可以了,代码如下:
var Worker = Worket("Worker.js");
在后台线程中是不能访问页面或窗口对象的。如果在后台线程的脚本文件中使用window对象或 document对象,则会引起错误的发生。
使用Worker对象的Message方沬来对后台线程发送消息,如下面代码所示:
Worker.postMessage(message);
在上述代码中,发送的消息是文本数据,但也可以是任何JavaScript对象(需要通过JSON对象的stingoify方法将其转换成文本数据)。
另外,可以通过获取Worker对象的onmessage事件句柄及Worker对象的postMessage方法,在后台线程内部进行消息的接收和发送。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>