Worker

Worker 是可以在后台运行的任务,它能够被轻松的创建,还能向它的创建者发送消息。 你只要调用 Worker() 构造函数,指定一个需要运行在 worker 线程内的脚本,就能够很容易的创建一个 worker。

一个值得注意的事实是:worker 能够产生出新的 worker,前提是这些 worker 托管于相同的源内来作为它们的父页面。 此外,worker 还能够使用 XMLHttpRequest 实现网络 I/O 操作, 只不过 XMLHttpRequest 上的 responseXML 与 channel 两个属性值始终返回 null。

 workder 支持的函数 页面提供了一个 worker 支持的全局函数列表。

Gecko 2.0 note
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

如果你想在扩展中使用 worker,并希望能够访问到 js-ctypes, 那么你应该使用 ChromeWorker 对象来代替 worker。

使用 web worker 提供了例子与细节描述。

方法概述

Worker (in DOMString scriptURL)

void postMessage(in JSObject message);

void terminate();

属性

Property Type Description
onmessage EventListener 一个事件监听函数,每当拥有 message 属性的 MessageEvent 从 worker 中冒泡出来时就会执行该函数。事件的 data 属性存有消息内容。
onerror EventListener 一个事件监听函数,每当类型为  error 的  ErrorEvent 从 worker 中冒泡出来时就会执行该函数。

错误信息对象

错误信息对象包含三个属性:

message
一个可读性良好的错误信息。
filename
产生错误的脚本文件名。
lineno
发生错误时所在的脚本文件行号。

构造函数

Worker()

该构造函数创建一个 web worker,它能执行位于指定 URL 上的脚本。脚本必须遵循 同源策略。 需要注意的是,浏览器制造商对于 data URI 是否需要同源存在分歧。虽然 Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) 以及后续版本都接受 data URI,但其他浏览器却并非如此。

Worker(
  in DOMString aStringURL
);
参数
aStringURL
worker 将要执行的脚本的 URL。它必须遵循同源策略(或是 Gecko 10.0 及后续版本支持的 data URI)。
返回值

一个新的 Worker。

方法

postMessage()

向 worker 的内部作用域内传递消息。该方法接收一个单独的参数,即要传递给 worker 的数据。数据可以是任何值或者是经过结构化拷贝算法处理过的 JavaScript 对象,换句话说,可以包含循环引用。

void postMessage( Object aMessage [, sequence<Transferable> transferList]);
参数
aMessage
传输给 worker 的对象;它将包含于传递给 onmessage 处理函数的事件对象中的 data 字段内。你可以传递任意值或是经过结构化拷贝算法处理过的 JavaScript 对象,即可以包含循环引用。
transferList
一个可选的对象数组,用于转让它们的所有权。如果一个对象的所有权被转让,那么它在原来的上下文内将不可使用,而只能在转让到的 worker 内可用。
规范可知, 只有 MessagePort 与 ArrayBuffers 对象能被转让。

terminate()

立即终止 worker。该方法不会给 worker 留下任何完成操作的机会;就是简单的立即停止。

void terminate();

See also

文档标签和贡献者

最后编辑者: khalid32,