Worker: Worker() 构造函数
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用,但 Service Workers 除外。
Worker() 构造函数创建一个 Worker 对象,该对象执行指定 URL 的脚本。该脚本必须遵守 同源策略。
注意: 浏览器厂商之间对于 data URL 是否属于同源存在分歧。虽然 Firefox 10 及更高版本接受 data URL,但并非所有其他浏览器都这样做。
语法
new Worker(url)
new Worker(url, options)
参数
url-
一个字符串,表示 worker 将执行的脚本的 URL。它必须遵守同源策略。URL 相对于当前 HTML 页面的位置进行解析。
注意: 包括 webpack、Vite 和 Parcel 在内的打包工具建议将相对于
import.meta.url的 URL 传递给Worker()构造函数。例如:jsconst myWorker = new Worker(new URL("worker.js", import.meta.url));这样,路径就相对于当前脚本而不是当前 HTML 页面,这允许打包工具安全地执行重命名等优化(因为否则
worker.jsURL 可能指向一个不受打包工具控制的文件,因此它无法做出任何假设)。 options可选-
一个对象,包含创建对象实例时可设置的选项属性。可用属性如下:
type-
一个字符串,指定要创建的 worker 的类型。该值可以是
classic或module。如果未指定,则默认为classic。 credentials-
一个字符串,指定 worker 使用的凭证类型。该值可以是
omit、same-origin或include。如果未指定,或者 type 是classic,则默认为same-origin(仅包含同源请求的凭证)。 name-
一个字符串,指定代表 worker 作用域的
DedicatedWorkerGlobalScope的标识名称,这对于调试目的非常有用。
异常
SecurityErrorDOMException-
如果文档不允许启动 worker,则会抛出此错误,例如,如果 URL 语法无效或违反了同源策略。
NetworkErrorDOMException-
如果 worker 脚本的 MIME 类型不正确,则会抛出此错误。它应该始终为
text/javascript(出于历史原因,其他 JavaScript MIME 类型也可能被接受)。 SyntaxErrorDOMException-
如果 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");
};
如需完整示例,请参阅我们的 基本专用 Worker 示例(运行专用 Worker)。
规范
| 规范 |
|---|
| HTML # dom-worker-dev |
浏览器兼容性
加载中…
另见
它所属的 Worker 接口。