Worker()

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

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

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

语法

const myWorker = new Worker(aURL, options);

参数

  • 如果文档不允许启动worker,则会引发SecurityError
  • 如果脚本之一的MIME类型为 text/csvimage/*video/*,或 audio/*, 则会引发NetworkError。它应该始终是 text/javascript。
  • 如果aURL无法解析,则引发SyntaxError。
aURL
是一个DOMString 表示worker 将执行的脚本的URL。它必须遵守同源策略。
options 可选
包含可在创建对象实例时设置的选项属性的对象。可用属性如下:
  • type:用以指定 worker 类型的  DOMString 值. 该值可以是 classic 或 module. 如果未指定,将使用默认值 classic.
  • credentials:用以指定 worker 凭证的 DOMString 值.该值可以是 omitsame-origin,或 include.。如果未指定,或者 type 是 classic,将使用默认值 omit (不要求凭证)。
  • nameDedicatedWorkerGlobalScope 的情况下,用来表示 worker 的 scope 的一个 DOMString 值,主要用于调试目的。

返回值

创建的 worker。

异常

  • 当 document 不被允许启动 worker 的时候,将抛出一个 SecurityError 异常。例如:如果提供的 aURL 有语法错误,或者与同源策略相冲突(跨域访问)。
  • 如果 worker 的 MIME 类型不正确,将抛出一个 NetworkError 异常。worker 的 MIME 类型必须是 text/javascript 。
  • 如果 aURL 无法被解析(格式错误),将抛出一个 SyntaxError 异常。

例子

下面的代码片段展示了通过 Worker() 创建 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).

规范

Specification Status Comment
HTML Living Standard
Worker()
Living Standard No change from Unknown.
Unknown
Worker()
Unknown Initial definition.

浏览器兼容性

BCD tables only load in the browser

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

另请参阅