From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/worker/index.html | 106 +++++++++++ .../zh-cn/web/api/worker/message_event/index.html | 85 +++++++++ .../web/api/worker/messageerror_event/index.html | 87 +++++++++ files/zh-cn/web/api/worker/onmessage/index.html | 124 ++++++++++++ .../zh-cn/web/api/worker/onmessageerror/index.html | 43 +++++ files/zh-cn/web/api/worker/postmessage/index.html | 210 +++++++++++++++++++++ files/zh-cn/web/api/worker/terminate/index.html | 106 +++++++++++ files/zh-cn/web/api/worker/worker/index.html | 112 +++++++++++ 8 files changed, 873 insertions(+) create mode 100644 files/zh-cn/web/api/worker/index.html create mode 100644 files/zh-cn/web/api/worker/message_event/index.html create mode 100644 files/zh-cn/web/api/worker/messageerror_event/index.html create mode 100644 files/zh-cn/web/api/worker/onmessage/index.html create mode 100644 files/zh-cn/web/api/worker/onmessageerror/index.html create mode 100644 files/zh-cn/web/api/worker/postmessage/index.html create mode 100644 files/zh-cn/web/api/worker/terminate/index.html create mode 100644 files/zh-cn/web/api/worker/worker/index.html (limited to 'files/zh-cn/web/api/worker') diff --git a/files/zh-cn/web/api/worker/index.html b/files/zh-cn/web/api/worker/index.html new file mode 100644 index 0000000000..915aceb681 --- /dev/null +++ b/files/zh-cn/web/api/worker/index.html @@ -0,0 +1,106 @@ +--- +title: Worker +slug: Web/API/Worker +tags: + - DOM + - Worker +translation_of: Web/API/Worker +--- +

{{APIRef("Web Workers API")}}

+ +

Worker 接口是 Web Workers API 的一部分,指的是一种可由脚本创建的后台任务,任务执行中可以向其创建者收发信息。要创建一个 Worker只须调用 Worker(URL) 构造函数,函数参数 `URL` 为指定的脚本。

+ +

Worker 也可以创建新的 Worker,当然,所有 Worker 必须与其创建者同源(注意:Blink暂时不支持嵌套 Worker)。 

+ +

需要注意的是,不是所有函数和构造函数(或者说…类)都可以在 Worker 中使用。具体参考页面 Worker 所支持的函数和类。Worker 可以使用 XMLHttpRequest 发送请求,但是请求的  responseXML 与 channel 两个属性值始终返回 null (fetch 仍可正常使用,没有类似的限制)。 

+ +
+

 如果你要在火狐浏览器的扩展使用 Worker 访问 js-ctypes,应使用 {{ domxref("ChromeWorker") }} 对象来替代。(译者注:这里没有看懂,希望有人能驳正,或添加说明)

+
+ +

构造函数

+ +
+
{{domxref("Worker.Worker", "Worker()")}}
+
创建一个专用Web worker,它只执行URL指定的脚本。使用 Blob URL 作为参数亦可。
+
+ +

属性

+ +

继承父对象{{domxref("EventTarget")}} 的属性,以及实现对象 {{domxref("AbstractWorker")}}的属性。

+ +

事件句柄

+ +
+
{{domxref("AbstractWorker.onerror")}}
+
当{{domxref("ErrorEvent")}} 类型的事件冒泡到 worker 时,事件监听函数 {{ domxref("EventListener") }} 被调用. 它继承于 {{domxref("AbstractWorker")}}.
+
{{domxref("Worker.onmessage")}}
+
当{{domxref("MessageEvent")}}类型的事件冒泡到 worker 时,事件监听函数 {{ domxref("EventListener") }} 被调用.  例如,一个消息通过 {{domxref("DedicatedWorkerGlobalScope.postMessage")}},从执行者发送到父页面对象,消息保存在事件对象的 {{domxref("MessageEvent.data", "data")}} 属性中.
+
{{domxref("Worker.onmessageerror")}}
+
当{{event("messageerror")}} 类型的事件发生时,对应的{{domxref("EventHandler")}} 代码被调用。
+
+ +

方法

+ +

继承父对象{{domxref("EventTarget")}} 的方法,以及实现对象 {{domxref("AbstractWorker")}}的方法。

+ +
+
{{domxref("Worker.postMessage()")}}
+
发送一条消息到最近的外层对象,消息可由任何 JavaScript 对象组成。
+
+ +
+
{{domxref("Worker.terminate()")}}
+
立即终止 worker。该方法不会给 worker 留下任何完成操作的机会;就是简单的立即停止。Service Woker 不支持这个方法。
+
+ +

示例

+ +

下面的代码通过构造函数 {{domxref("Worker.Worker", "Worker()")}}  创建了一个 {{domxref("Worker")}} 对象。

+ +
var myWorker = new Worker('worker.js');
+var first = document.querySelector('#number1');
+var second = document.querySelector('#number2');
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+ +

完整的示例,请查阅 Basic dedicated worker example (run dedicated worker).

+ +

规范

+ + + + + + + + + + + + + + +
规范状态说明
{{SpecName('HTML WHATWG', "#worker", "Worker")}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ +

不同类型的worker兼容度不一致,详细参考具体定义的页面。

+ +

{{Compat("api.Worker")}}

+ +

跨域行为的错误事件

+ +

浏览器的早期版本中,加载跨域的执行者脚本导致 SecurityError事件。根据规范的变更,而新版本的浏览器只有{{event("error")}}事件发生。关于如何处理这种事件的更多信息参考 Loading cross-origin worker now fires error event instead of throwing; worker in sandboxed iframe no longer allowed.

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/worker/message_event/index.html b/files/zh-cn/web/api/worker/message_event/index.html new file mode 100644 index 0000000000..909bfc8434 --- /dev/null +++ b/files/zh-cn/web/api/worker/message_event/index.html @@ -0,0 +1,85 @@ +--- +title: 'Worker: message event' +slug: Web/API/Worker/message_event +translation_of: Web/API/Worker/message_event +--- +
{{APIRef}}
+ +
当 worker 的父级接收到来自其 worker 的消息时,会在 {{domxref('Worker')}} 对象上触发 message 事件。例如:当 worker 通过 DedicatedWorkerGlobalScope.postMessage() 发送了一条消息时。
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可撤销
接口{{domxref("MessageEvent")}}
对应事件处理属性onmessage
+ +

例子

+ +

下面的代码创建了一个 worker 并使用 addEventListener() 监听从 worker 发来的消息:

+ +
const worker = new Worker("static/scripts/worker.js");
+
+worker.addEventListener('message', (event) => {
+    console.log(`Received message from worker: ${event.data}`)
+});
+ +

另外,也可以使用 onmessage 事件处理属性进行监听:

+ +
const worker = new Worker("static/scripts/worker.js");
+
+worker.onmessage = (event) => {
+    console.log(`Received message from worker: ${event.data}`)
+};
+ +

worker 使用  self.postMessage() 发出消息:

+ +
// static/scripts/worker.js
+
+self.postMessage('I\'m alive!');
+ +

规范

+ + + + + + + + + + + + +
SpecificationStatus
{{SpecName('HTML WHATWG', 'indices.html#event-message')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Worker.message_event")}}

+ +

另请参阅

+ + diff --git a/files/zh-cn/web/api/worker/messageerror_event/index.html b/files/zh-cn/web/api/worker/messageerror_event/index.html new file mode 100644 index 0000000000..32ebd5d631 --- /dev/null +++ b/files/zh-cn/web/api/worker/messageerror_event/index.html @@ -0,0 +1,87 @@ +--- +title: 'Worker: messageerror event' +slug: Web/API/Worker/messageerror_event +translation_of: Web/API/Worker/messageerror_event +--- +
{{APIRef}}
+ +

当 {{domxref('Worker')}} 对象接收到一条无法被反序列化的消息时, messageerror 事件将在该对象上被触发。

+ + + + + + + + + + + + + + + + + + + + +
是否冒泡
是否可取消
接口{{domxref("MessageEvent")}}
对应事件处理属性onmessageerror
+ +

例子

+ +

创建一个 worker ,使用 addEventListener() 监听 message 和 messageerror 事件:

+ +
// inside main.js
+
+const worker = new Worker("static/scripts/worker.js");
+
+worker.addEventListener("message", (event) => {
+    console.error(`Received message from worker: ${event}`);
+});
+
+worker.addEventListener("messageerror", (event) => {
+    console.error(`Error receiving message from worker: ${event}`);
+});
+ +

同样,可以使用 onmessageerror 事件处理属性监听事件:

+ +
// inside main.js
+
+const worker = new Worker("static/scripts/worker.js");
+
+worker.onmessage = (event) => {
+    console.error(`Received message from worker: ${event}`);
+};
+
+worker.onmessageerror = (event) => {
+    console.error(`Error receiving message from worker: ${event}`);
+};
+ +

规范

+ + + + + + + + + + + + +
SpecificationStatus
{{SpecName('HTML WHATWG', 'indices.html#event-messageerror')}}{{Spec2('HTML WHATWG')}}
+ +

浏览器兼容性

+ + + +

{{Compat("api.Worker.messageerror_event")}}

+ +

另请参阅

+ + diff --git a/files/zh-cn/web/api/worker/onmessage/index.html b/files/zh-cn/web/api/worker/onmessage/index.html new file mode 100644 index 0000000000..9fb062c24f --- /dev/null +++ b/files/zh-cn/web/api/worker/onmessage/index.html @@ -0,0 +1,124 @@ +--- +title: Worker.onmessage +slug: Web/API/Worker/onmessage +translation_of: Web/API/Worker/onmessage +--- +

{{APIRef("Web Workers API")}}

+ +

{{domxref("Worker")}} 接口的onmessage属性表示一个{{domxref("EventHandler")}}事件处理函数,当{{event("message")}} 事件发生时,该函数被调用。这些事件所属{{domxref("MessageEvent")}}类型,且当Worker子线程返回一条消息时被调用(比如:从{{domxref("DedicatedWorkerGlobalScope.postMessage")}}函数发出的信息)

+ +
+

注意: 消息被装载到 {{event("message")}}事件对象的data属性。(译者:即传递的消息参数将被赋值给onmessage处理函数的事件参数e中的data属性)

+
+ +

语法

+ +
myWorker.onmessage = function(e) { ... }
+ +

范例

+ +

下面的代码片段示范用{{domxref("Worker.Worker", "Worker()")}} 构造函数创建一个{{domxref("Worker")}}对象。当表单的first输入框的值变更时,消息被传递给worker。myWorker.onmessage函数用来处理从worker回传的消息。

+ +
var myWorker = new Worker('worker.js');
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+
+myWorker.onmessage = function(e) {
+  result.textContent = e.data;
+  console.log('Message received from worker');
+}
+
+ +

worker.js中,  onmessage 函数用来接收从主线程传递过来的信息:

+ +
onmessage = function(e) {
+  console.log('Message received from main script');
+  var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
+  console.log('Posting message back to main script');
+  postMessage(workerResult);
+}
+ +

请注意,主线程中必须以myWorker.onmessage方式调用,  反之 worker.js 脚本中, 只需定义 onmessage, 因为worker.js全域有效({{domxref("DedicatedWorkerGlobalScope")}}).

+ +

完整范例,请参考Basic dedicated worker example (run dedicated worker).

+ +

规范

+ + + + + + + + + + + + + + + + + + + +
规范状态注释
{{SpecName('HTML WHATWG', "#handler-worker-onmessage", "Worker.onmessage")}}{{Spec2('HTML WHATWG')}}No change from {{SpecName("Web Workers")}}.
{{SpecName('Web Workers', "#handler-worker-onmessage", "Worker.onmessage")}}{{Spec2('Web Workers')}}Initial definition.
+ +

浏览器兼容性

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
特性ChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
基本支持43.510.010.64
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
特性AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
基本支持4.43.51.0.110.011.55.1
+
+ +

参阅

+ +

{{domxref("Worker")}} 接口所属。

diff --git a/files/zh-cn/web/api/worker/onmessageerror/index.html b/files/zh-cn/web/api/worker/onmessageerror/index.html new file mode 100644 index 0000000000..17783b2e6b --- /dev/null +++ b/files/zh-cn/web/api/worker/onmessageerror/index.html @@ -0,0 +1,43 @@ +--- +title: Worker.onmessageerror +slug: Web/API/Worker/onmessageerror +translation_of: Web/API/Worker/onmessageerror +--- +
{{APIRef("HTML DOM")}}
+ +

{{domxref("Worker")}} 的 onmessageerror 事件处理器接口是一个{{domxref("EventListener")}}, 在 {{domxref("MessageEvent")}} 类型的事件 messageerror 触发时调用 — 也就是说, 它收到的消息是不能进行序列化的 {{glossary("Deserialization", "deserialized")}}.

+ +

{{AvailableInWorkers}}

+ +

Syntax

+ +
Worker.onmessageerror = function() { ... };
+ +

规范

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', '#handler-worker-onmessageerror', 'onmessageerror')}}{{Spec2('HTML WHATWG')}} 
+ +

浏览器兼容性

+ + + +

{{Compat("api.Worker.onmessageerror")}}

+ +

相关链接

+ + diff --git a/files/zh-cn/web/api/worker/postmessage/index.html b/files/zh-cn/web/api/worker/postmessage/index.html new file mode 100644 index 0000000000..bc31892eec --- /dev/null +++ b/files/zh-cn/web/api/worker/postmessage/index.html @@ -0,0 +1,210 @@ +--- +title: Worker.postMessage() +slug: Web/API/Worker/postMessage +tags: + - Worker + - Worker.postMessage() + - postMessage() +translation_of: Web/API/Worker/postMessage +--- +

{{APIRef("Web Workers API")}}

+ +

{{domxref("Worker")}} 接口的 postMessage()方法向worker的内部作用域发送一个消息。这接受单个参数,这是要发送给worker的数据。数据可以是由结构化克隆算法处理的任何值或JavaScript对象,其包括循环引用。

+ +

工作者可以使用 {{domxref("DedicatedWorkerGlobalScope.postMessage")}}  方法将信息发送回生成它的线程。

+ +

语法

+ +
myWorker.postMessage(aMessage, transferList);
+ +

参数

+ +
+
aMessage
+
The object to deliver to the worker; this will be in the data field in the event delivered to the {{domxref("DedicatedWorkerGlobalScope.onmessage")}} handler. This may be any value or JavaScript object handled by the structured clone algorithm, which includes cyclical references.
+
transferList {{optional_inline}}
+
一个可选的{{domxref("Transferable")}}对象的数组,用于传递所有权。如果一个对象的所有权被转移,在发送它的上下文中将变为不可用(中止),并且只有在它被发送到的worker中可用。
+
可转移对象是如{{domxref("ArrayBuffer")}},{{domxref("MessagePort")}}或{{domxref("ImageBitmap")}}的实例对象。transferList数组中不可传入null。
+
+ +

Returns

+ +

Void.

+ +

Example

+ +

以下代码显示了如何使用 {{domxref("Worker.Worker", "Worker()")}} 构造函数创建一个Worker对象。当两个表单输入(firstsecond)中的其中一个的输入值改变时, {{event("change")}} 事件将调用postMessage()把两个input的值发送给当前worker。

+ +
var myWorker = new Worker('worker.js');
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+
+second.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+
+ +

有关完整的示例,请参阅我们的Basic dedicated worker example (run dedicated worker).

+ +
+

Note: postMessage() 一次只能发送一个对象。如上所示,如果你想传递多个值,可以使用数组。

+
+ +

Transfer Example

+ +

This example shows a Firefox add-on that transfers an ArrayBuffer from the main thread to the ChromeWorker, and then the ChromeWorker transfers it back to the main thread.

+ +

Main thread code:

+ +
var myWorker = new ChromeWorker(self.path + 'myWorker.js');
+
+function handleMessageFromWorker(msg) {
+    console.log('incoming message from worker, msg:', msg);
+    switch (msg.data.aTopic) {
+        case 'do_sendMainArrBuff':
+            sendMainArrBuff(msg.data.aBuf)
+            break;
+        default:
+            throw 'no aTopic on incoming message to ChromeWorker';
+    }
+}
+
+myWorker.addEventListener('message', handleMessageFromWorker);
+
+// Ok lets create the buffer and send it
+var arrBuf = new ArrayBuffer(8);
+console.info('arrBuf.byteLength pre transfer:', arrBuf.byteLength);
+
+myWorker.postMessage(
+    {
+        aTopic: 'do_sendWorkerArrBuff',
+        aBuf: arrBuf // The array buffer that we passed to the transferrable section 3 lines below
+    },
+    [
+        arrBuf // The array buffer we created 9 lines above
+    ]
+);
+
+console.info('arrBuf.byteLength post transfer:', arrBuf.byteLength);
+
+ +

Worker code

+ +
self.onmessage = function (msg) {
+    switch (msg.data.aTopic) {
+        case 'do_sendWorkerArrBuff':
+                sendWorkerArrBuff(msg.data.aBuf)
+            break;
+        default:
+            throw 'no aTopic on incoming message to ChromeWorker';
+    }
+}
+
+function sendWorkerArrBuff(aBuf) {
+    console.info('from worker, PRE send back aBuf.byteLength:', aBuf.byteLength);
+
+    self.postMessage({aTopic:'do_sendMainArrBuff', aBuf:aBuf}, [aBuf]);
+
+    console.info('from worker, POST send back aBuf.byteLength:', aBuf.byteLength);
+}
+
+ +

Output logged

+ +
arrBuf.byteLength pre transfer: 8                              bootstrap.js:40
+arrBuf.byteLength post transfer: 0                             bootstrap.js:42
+
+from worker, PRE send back aBuf.byteLength: 8                  myWorker.js:5:2
+
+incoming message from worker, msg: message { ... }             bootstrap.js:20
+got back buf in main thread, aBuf.byteLength: 8                bootstrap.js:12
+
+from worker, POST send back aBuf.byteLength: 0                 myWorker.js:7:2
+ +

byteLength goes to 0 as it is transferred. To see a full working example of this Firefox demo add-on see here: GitHub :: ChromeWorker - demo-transfer-arraybuffer

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "#dom-worker-postmessage", "Worker.postMessage()")}}{{Spec2('HTML WHATWG')}}No change from {{SpecName("Web Workers")}}.
{{SpecName('Web Workers', "#dom-worker-postmessage", "Worker.postMessage()")}}{{Spec2('Web Workers')}}Initial definition.
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}10.0 [1]{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}10.0 [1]{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

[1] Internet Explorer does not support {{domxref("Transferable")}} objects.

+ +

See also

+ + diff --git a/files/zh-cn/web/api/worker/terminate/index.html b/files/zh-cn/web/api/worker/terminate/index.html new file mode 100644 index 0000000000..f49f8f2c91 --- /dev/null +++ b/files/zh-cn/web/api/worker/terminate/index.html @@ -0,0 +1,106 @@ +--- +title: Worker.terminate() +slug: Web/API/Worker/terminate +translation_of: Web/API/Worker/terminate +--- +

{{APIRef("Web Workers API")}}

+ +

{{domxref("Worker")}} 接口中的 terminate()  方法用于立即终止 {{domxref("Worker")}} 的行为. 本方法并不会等待 worker 去完成它剩余的操作;worker 将会被立刻停止

+ +

Syntax

+ +
myWorker.terminate();
+ +

参数

+ +

没有。

+ +

返回值

+ +

Void.

+ +

Example

+ +

以下代码示例表明,通过使用 {{domxref("Worker.Worker", "Worker()")}} 构造器创建出的{{domxref("Worker")}} 对象,在下一步操作之后会被立即终止。

+ +
var myWorker = new Worker('worker.js');
+
+myWorker.terminate();
+
+ +

Specifications

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "#dom-worker-terminate", "Worker.terminate()")}}{{Spec2('HTML WHATWG')}} 
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support4{{CompatVersionUnknown}}3.510.010.64
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support4.4{{CompatVersionUnknown}}3.51.0.110.011.55.1
+
+ +

See also

+ +

{{domxref("Worker")}} 接口。

diff --git a/files/zh-cn/web/api/worker/worker/index.html b/files/zh-cn/web/api/worker/worker/index.html new file mode 100644 index 0000000000..1dc6244203 --- /dev/null +++ b/files/zh-cn/web/api/worker/worker/index.html @@ -0,0 +1,112 @@ +--- +title: Worker() +slug: Web/API/Worker/Worker +tags: + - API + - Constructor + - Reference + - Web Workers + - Worker + - Worker() +translation_of: Web/API/Worker/Worker +--- +

{{APIRef("Web Workers API")}}

+ +

Worker() 构造函数创建一个 {{domxref("Worker")}} 对象,该对象执行指定的URL脚本。这个脚本必须遵守 同源策略 。

+ +

如果 此URL有一个无效的语句,或者违反同源策略,一个 SECURITY_ERR 类型的{{domxref("DOMException")}}被抛出。

+ +
+

Note: 浏览器厂商对于 data URI 是否同源存在分歧。尽管 Gecko 10.0 {{ geckoRelease("10.0") }} 和之后的版本接受 data URIs,但在所有其他浏览器中并非如此。

+
+ +

语法

+ +
const myWorker = new Worker(aURL, options);
+ +

参数

+ + + +
+
aURL
+
是一个{{domxref("DOMString")}} 表示worker 将执行的脚本的URL。它必须遵守同源策略。
+
options {{optional_inline}}
+
包含可在创建对象实例时设置的选项属性的对象。可用属性如下: +
    +
  • type:用以指定 worker 类型的  {{domxref("DOMString")}} 值. 该值可以是 classic 或 module. 如果未指定,将使用默认值 classic.
  • +
  • credentials:用以指定 worker 凭证的 {{domxref("DOMString")}} 值.该值可以是 omitsame-origin,或 include.。如果未指定,或者 type 是 classic,将使用默认值 omit (不要求凭证)。
  • +
  • name在 {{domxref("DedicatedWorkerGlobalScope")}} 的情况下,用来表示 worker 的 scope 的一个 {{domxref("DOMString")}} 值,主要用于调试目的。
  • +
+
+
+ +

返回值

+ +

创建的 worker。

+ +

异常

+ + + +

例子

+ +

下面的代码片段展示了通过 Worker() 创建 {{domxref("Worker")}} 对象的过程, 以及随后的使用方法:

+ +
let myWorker = new Worker("worker.js");
+
+first.onchange = function() {
+  myWorker.postMessage([first.value,second.value]);
+  console.log('Message posted to worker');
+}
+ +

完整的例子请看 Basic dedicated worker example (run dedicated worker).

+ +

规范

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('HTML WHATWG', "#dom-worker", "Worker()")}}{{Spec2('HTML WHATWG')}}No change from {{SpecName("Web Workers")}}.
{{SpecName('Web Workers', "#dom-worker", "Worker()")}}{{Spec2('Web Workers')}}Initial definition.
+ +

浏览器兼容性

+ +
{{Compat("api.Worker.Worker")}}
+ +
+

Note: 浏览器可以被标记为对Worker()的完全支持尽管他并不支持一个以modules类型编写的脚本。截至2019年8月1日,暂无浏览器支持以模块类型编写的脚本。如果没有这种支持,moduleds类型的脚本必须使用编译器翻译成无module代码才能在浏览器上运行。

+
+ + + +
+ +
另请参阅
+ + -- cgit v1.2.3-54-g00ecf