工作线程:Worker() 构造函数
注意:此功能在 Web Workers 中可用,但 Service Workers 除外。
Worker()
构造函数创建一个 Worker
对象,该对象执行指定 URL 处的脚本。此脚本必须遵守 同源策略。
注意:浏览器制造商之间存在争议,关于数据 URL 是否是同源的。虽然 Firefox 10 及更高版本接受数据 URL,但这在所有其他浏览器中并不适用。
语法
new Worker(url)
new Worker(url, options)
参数
url
-
表示工作线程将执行的脚本的 URL 的字符串。它必须遵守同源策略。URL 相对于当前 HTML 页面的位置解析。
注意:打包器,包括 Webpack、Vite 和 Parcel,建议将相对于
import.meta.url
的 URL 传递给Worker()
构造函数。例如jsconst myWorker = new Worker(new URL("worker.js", import.meta.url));
这样,路径相对于当前脚本而不是当前 HTML 页面,这允许打包器安全地进行优化,例如重命名(因为否则
worker.js
URL 可能指向一个未由打包器控制的文件,因此它不能做出任何假设)。 options
可选-
包含在创建对象实例时可以设置的选项属性的对象。可用的属性如下
type
-
指定要创建的工作线程类型的字符串。该值可以是
classic
或module
。如果未指定,则使用默认值classic
。 credentials
-
指定用于工作线程的凭据类型的字符串。该值可以是
omit
、same-origin
或include
。如果未指定,或者如果 type 是classic
,则使用默认值same-origin
(仅对同源请求包含凭据)。 name
-
指定表示工作线程范围的
DedicatedWorkerGlobalScope
的标识名称的字符串,这主要用于调试目的。
异常
SecurityError
DOMException
-
如果文档不允许启动工作线程,则抛出此异常,例如,如果 URL 的语法无效或违反了同源策略。
NetworkError
DOMException
-
如果工作线程脚本的 MIME 类型不正确,则抛出此异常。它应该始终为
text/javascript
(出于历史原因,其他 JavaScript MIME 类型 可能被接受)。 SyntaxError
DOMException
-
如果aURL无法解析,则抛出此异常。
示例
以下代码片段显示了使用 Worker()
构造函数创建 Worker
对象以及随后对该对象的用法
const myWorker = new Worker("worker.js");
const first = document.querySelector("input#number1");
first.onchange = () => {
myWorker.postMessage(first.value);
console.log("Message posted to worker");
};
有关完整示例,请参阅我们的 基本专用工作线程示例 (运行专用工作线程)。
规范
规范 |
---|
HTML 标准 # dom-worker-dev |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
它所属的 Worker
接口。