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/csv
,image/*
,video/*
,或audio/*
, 则会引发NetworkError。它应该始终是 text/javascript。 - 如果aURL无法解析,则引发SyntaxError。
- aURL
- 是一个
DOMString
表示worker 将执行的脚本的URL。它必须遵守同源策略。 - options 可选
- 包含可在创建对象实例时设置的选项属性的对象。可用属性如下:
type
:用以指定 worker 类型的DOMString
值. 该值可以是classic
或module
. 如果未指定,将使用默认值classic.
credentials
:用以指定 worker 凭证的DOMString
值.该值可以是omit
,same-origin
,或include
.。如果未指定,或者 type 是classic
,将使用默认值omit
(不要求凭证)。name
:在DedicatedWorkerGlobalScope
的情况下,用来表示 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代码才能在浏览器上运行。
另请参阅