new Worker(filename[, options])
filename<string> | <URL> Worker 主脚本或模块的路径。必须是绝对路径或相对路径(即相对于当前工作目录),相对路径需以./或../开头,或是使用file:或data:协议的 WHATWGURL对象。使用data:URL 时,数据会根据 MIME 类型通过 ECMAScript 模块加载器 进行解释。如果options.eval为true,则此处为包含 JavaScript 代码的字符串,而不是路径。options<Object>argv<any[]> 参数列表,这些参数将被转换为字符串并追加到工作线程的process.argv中。这与workerData大致相似,但这些值会出现在全局process.argv中,就好像它们作为命令行选项传递给脚本一样。env<Object> 如果设置,指定 Worker 线程内部process.env的初始值。作为一个特殊值,可以使用worker.SHARE_ENV来指定父线程和子线程共享它们的环境变量;在这种情况下,对某一线程的process.env对象的更改也会影响另一线程。默认值:process.env。eval<boolean> 如果为true且第一个参数是string,则将构造函数的第一个参数解释为脚本,在工作线程上线后执行一次。execArgv<string[]> 传递给工作线程的 Node CLI 选项列表。V8 选项(例如--max-old-space-size)以及影响进程的选项(例如--title)不被支持。如果设置,则在工作线程中作为process.execArgv提供。默认情况下,选项会从父线程继承。stdin<boolean> 如果设置为true,则worker.stdin会提供一个可写流,其内容将显示在 Worker 内的process.stdin中。默认情况下,不提供任何数据。stdout<boolean> 如果设置为true,则worker.stdout不会自动传输到父进程的process.stdout。stderr<boolean> 如果设置为true,则worker.stderr不会自动传输到父进程的process.stderr。workerData<any> 任何 JavaScript 值都会被克隆并作为require('node:worker_threads').workerData提供。克隆的过程如 HTML 结构化克隆算法 所述,如果对象无法克隆(例如因为它包含function),则会抛出错误。trackUnmanagedFds<boolean> 如果设置为true,Worker 将跟踪通过fs.open()和fs.close()管理的原始文件描述符,并在 Worker 退出时关闭它们,这类似于通过FileHandleAPI 管理的网络套接字或文件描述符等其他资源。此选项会自动被所有嵌套的Worker继承。默认值:true。transferList<Object[]> 如果在workerData中传入一个或多个类似MessagePort的对象,则必须为这些对象提供transferList,否则会抛出ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。有关更多信息,请参阅port.postMessage()。resourceLimits<Object> 新的 JS 引擎实例的可选资源限制集合。达到这些限制会导致Worker实例终止。这些限制只影响 JS 引擎,不影响任何外部数据,包括ArrayBuffer。即使设置了这些限制,如果进程遇到全局内存不足的情况,仍可能会中止。maxOldGenerationSizeMb<number> 主堆的最大大小(以 MB 为单位)。如果命令行参数--max-old-space-size已设置,它将覆盖此设置。maxYoungGenerationSizeMb<number> 最近创建对象的堆空间的最大大小。如果命令行参数--max-semi-space-size已设置,它将覆盖此设置。codeRangeSizeMb<number> 用于生成代码的预分配内存范围的大小。stackSizeMb<number> 线程的默认最大堆栈大小。较小的值可能导致 Worker 实例无法使用。默认值:4。
name<string> 一个可选的name,用于替换线程名称以及用于调试/识别目的的工作线程标题,最终标题将为[worker ${id}] ${name}。该参数的最大允许长度取决于操作系统。如果提供的名称超过限制,将会被截断- 最大尺寸:
- Windows:32,767 个字符
- macOS:64 个字符
- Linux:16 个字符
- NetBSD:受限于
PTHREAD_MAX_NAMELEN_NP - FreeBSD 和 OpenBSD:限制为
MAXCOMLEN默认值:'WorkerThread'。
- 最大尺寸: