new Worker(filename[, options])


  • filename <string> 工作线程主脚本的路径。必须是以 ./../ 开头的绝对路径或相对路径(即相对于当前工作目录)、或者使用 file: 协议的 WHATWG URL 对象。 如果 options.evaltrue,则这是一个包含 JavaScript 代码而不是路径的字符串。
  • options <Object>

    • argv <any[]> 参数列表,其将会被字符串化并附加到工作线程中的 process.argv。 这大部分与 workerData 相似,但是这些值将会在全局的 process.argv 中可用,就好像它们是作为 CLI 选项传给脚本一样。
    • env <Object> 如果设置,则指定工作线程中 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 将会提供一个可写流,其内容将会在工作线程中以 process.stdin 出现。 默认情况下,不提供任何数据。
    • stdout <boolean> 如果将其设置为 true,则 worker.stdout 将不会自动地通过管道传递到父线程中的 process.stdout
    • stderr <boolean> 如果将其设置为 true,则 worker.stderr 将不会自动地通过管道传递到父线程中的 process.stderr
    • workerData <any> 能被克隆并作为 require('worker_threads').workerData 的任何 JavaScript 值。 克隆将会按照 HTML 结构化克隆算法中描述的进行,如果对象无法被克隆(例如,因为它包含 function),则会抛出错误。
    • transferList <Object[]> If one or more MessagePort-like objects are passed in workerData, a transferList is required for those items or ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST will be thrown. See port.postMessage() for more information.
    • resourceLimits <Object> 新的 JS 引擎实例的一组可选的资源限制。 达到这些限制将会导致终止 Worker 实例。 这些限制仅影响 JS 引擎,并且不影响任何外部数据,包括 ArrayBuffers。 即使设置了这些限制,如果遇到全局内存不足的情况,该进程仍可能中止。

      • maxOldGenerationSizeMb <number> 主堆的最大大小,以 MB 为单位。
      • maxYoungGenerationSizeMb <number> 最近创建的对象的堆空间的最大大小。
      • codeRangeSizeMb <number> 用于生成代码的预分配的内存范围的大小。
      • stackSizeMb <number> The default maximum stack size for the thread. Small values may lead to unusable Worker instances. Default: 4.
  • filename <string> | <URL> The path to the Worker’s main script or module. Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../, or a WHATWG URL object using file: protocol. If options.eval is true, this is a string containing JavaScript code rather than a path.
  • options <Object>

    • argv <any[]> List of arguments which would be stringified and appended to process.argv in the worker. This is mostly similar to the workerData but the values will be available on the global process.argv as if they were passed as CLI options to the script.
    • env <Object> If set, specifies the initial value of process.env inside the Worker thread. As a special value, worker.SHARE_ENV may be used to specify that the parent thread and the child thread should share their environment variables; in that case, changes to one thread’s process.env object will affect the other thread as well. Default: process.env.
    • eval <boolean> If true and the first argument is a string, interpret the first argument to the constructor as a script that is executed once the worker is online.
    • execArgv <string[]> List of node CLI options passed to the worker. V8 options (such as --max-old-space-size) and options that affect the process (such as --title) are not supported. If set, this will be provided as process.execArgv inside the worker. By default, options will be inherited from the parent thread.
    • stdin <boolean> If this is set to true, then worker.stdin will provide a writable stream whose contents will appear as process.stdin inside the Worker. By default, no data is provided.
    • stdout <boolean> If this is set to true, then worker.stdout will not automatically be piped through to process.stdout in the parent.
    • stderr <boolean> If this is set to true, then worker.stderr will not automatically be piped through to process.stderr in the parent.
    • workerData <any> Any JavaScript value that will be cloned and made available as require('worker_threads').workerData. The cloning will occur as described in the HTML structured clone algorithm, and an error will be thrown if the object cannot be cloned (e.g. because it contains functions).
    • transferList <Object[]> If one or more MessagePort-like objects are passed in workerData, a transferList is required for those items or ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST will be thrown. See port.postMessage() for more information.
    • resourceLimits <Object> An optional set of resource limits for the new JS engine instance. Reaching these limits will lead to termination of the Worker instance. These limits only affect the JS engine, and no external data, including no ArrayBuffers. Even if these limits are set, the process may still abort if it encounters a global out-of-memory situation.

      • maxOldGenerationSizeMb <number> The maximum size of the main heap in MB.
      • maxYoungGenerationSizeMb <number> The maximum size of a heap space for recently created objects.
      • codeRangeSizeMb <number> The size of a pre-allocated memory range used for generated code.
      • stackSizeMb <number> The default maximum stack size for the thread. Small values may lead to unusable Worker instances. Default: 4.