Obxecto obxecto incorporado

ObjectWorker

O obxecto Worker é un obxecto usado para crear fíos fillos, que se poden crear e procesar no programa. Un obxecto Worker pódese entender como un proceso JavaScript que se executa nun fío diferente do fío principal. O traballador non comparte memoria co fío principal e non bloquea o fío principal. É un método de programación asíncrono convencional.

O construtor do obxecto Worker é o seguinte:

1
new Worker(String path, Object opts = {})

en,pathO parámetro especifica a ruta do ficheiro JavaScript do novo fío. Por exemplo, pode escribir un ficheiro work.js co seguinte contido:

1 2 3 4
const { Worker } = require('worker_threads'); console.log('Hi from worker');

No programa principal, executa work.js co seguinte código:

1 2 3 4
const { Worker } = require('worker_threads'); const worker = new Worker('path/to/work.js');

Despois de executar, podes ver a saída "Ola do traballador" na consola do programa principal.

No seguinte exemplo, supoñamos que temos un cálculo de longa duración e queremos poñelo noutro fío para procesar sen que este cálculo nos bloquee no fío principal. código móstrase como a continuación:

Fío principal:

1 2 3 4 5 6 7 8 9 10 11 12
const { Worker } = require('worker_threads'); // create a worker thread const fib = new Worker(__dirname + '/fib-worker.js'); // receive the result from the worker thread fib.onmessage = (ev) => { console.log('result: ', ev.data); }; fib.postMessage(40); console.log('main thread still working');

Neste exemplo, creamos un fío de traballo a través do construtor do obxecto Worker para procesar o cálculo da secuencia de Fibonacci. O fío principal pasa datos ao fío de traballo a través do método postMessage() e obtén os resultados do procesamento a través do evento onmessage . Ao mesmo tempo, o fío principal mostra a mensaxe "aínda funcionando" para demostrar que esta tarefa informática foi "delegada" ao fío de traballo e pode continuar procesando outras cousas.

O estilo do código do fío de traballo é o seguinte:

1 2 3 4 5 6 7 8 9 10 11 12
// fib-worker.js Master.onmessage = (ev) => { const n = ev.data; const result = fib(n); // Once the calculation has been completed, the result is sent back to the main thread. Master.postMessage(result); }; function fib(n) { if (n <= 1) return n; return fib(n - 1) + fib(n - 2); }

No fío de traballo, escoitamos as mensaxes enviadas polo fío principal a través do parámetro de entrada postMessage(), calculamos a secuencia de Fibonacci especificada e enviamos os resultados do cálculo de volta ao fío principal a través do método Master.postMessage().

Este é o exemplo de Worker máis básico. Cando se desenvolven usando obxectos Worker, o fío principal e o fío de traballo son completamente asíncronos. Cada obxecto Worker é un fío separado. O obxecto Worker instanciado no fío principal non xerará ningún bloque.

relación de herdanza

Construtor

Worker

Construtor de obxectos de traballo

1 2
new Worker(String path, Object opts = {});

Parámetros de chamada:

  • path: Cadea, especifica o script de entrada de Worker, só acepta camiños absolutos
  • opts: Obxecto, opción de construción, aínda non compatible

propiedades estáticas

defaultMaxListeners

Enteiro, o número máximo global predeterminado de oíntes

1
static Integer Worker.defaultMaxListeners;

propiedades dos membros

onload

A función, a consulta e a vinculación aceptan o evento da mensaxe de carga, que é equivalente a on("load", func);

1
Function Worker.onload;

onmessage

Función, consulta e vinculación aceptan eventos de mensaxes postMessage, equivalentes a on("mensaxe", func);

1
Function Worker.onmessage;

onerror

Función, consulta e vinculación aceptan eventos de mensaxes de erro, equivalentes a on("error", func);

1
Function Worker.onerror;

función de membro

postMessage

Envía unha mensaxe ao mestre ou ao traballador,

1
Worker.postMessage(Value data);

Parámetros de chamada:

  • data: Valor, especifica o contido da mensaxe enviada

on

Vincular un controlador de eventos ao obxecto

1 2
Object Worker.on(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Vincular un controlador de eventos ao obxecto

1
Object Worker.on(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto empregarase como nome do evento e o valor do atributo como función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

addListener

Vincular un controlador de eventos ao obxecto

1 2
Object Worker.addListener(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Vincular un controlador de eventos ao obxecto

1
Object Worker.addListener(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto empregarase como nome do evento e o valor do atributo como función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

prependListener

Vincular un controlador de eventos á orixe do obxecto

1 2
Object Worker.prependListener(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Vincular un controlador de eventos á orixe do obxecto

1
Object Worker.prependListener(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto empregarase como nome do evento e o valor do atributo como función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

once

Vincula un controlador de eventos único ao obxecto. O manejador único só se activará unha vez.

1 2
Object Worker.once(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Vincula un controlador de eventos único ao obxecto. O manejador único só se activará unha vez.

1
Object Worker.once(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto empregarase como nome do evento e o valor do atributo como función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

prependOnceListener

Vincular un controlador de eventos á orixe do obxecto

1 2
Object Worker.prependOnceListener(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Vincular un controlador de eventos á orixe do obxecto

1
Object Worker.prependOnceListener(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto empregarase como nome do evento e o valor do atributo como función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

off

Desasignar unha función da cola de procesamento de obxectos

1 2
Object Worker.off(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Cancela todas as funcións da cola de procesamento de obxectos

1
Object Worker.off(String ev);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Desasignar unha función da cola de procesamento de obxectos

1
Object Worker.off(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto úsase como nome do evento e o valor do atributo úsase como función de procesamento de eventos.

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

removeListener

Desasignar unha función da cola de procesamento de obxectos

1 2
Object Worker.removeListener(String ev, Function func);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento
  • func: Función, especifique a función de procesamento de eventos

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Cancela todas as funcións da cola de procesamento de obxectos

1
Object Worker.removeListener(String ev);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Desasignar unha función da cola de procesamento de obxectos

1
Object Worker.removeListener(Object map);

Parámetros de chamada:

  • map: Obxecto, especifica a relación de asignación de eventos, o nome do atributo do obxecto úsase como nome do evento e o valor do atributo úsase como función de procesamento de eventos.

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

removeAllListeners

Cancela todos os oíntes de todos os eventos da cola de procesamento do obxecto. Se se especifica un evento, elimina todos os oíntes do evento especificado.

1
Object Worker.removeAllListeners(String ev);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

Cancela todos os oíntes de todos os eventos da cola de procesamento do obxecto. Se se especifica un evento, elimina todos os oíntes do evento especificado.

1
Object Worker.removeAllListeners(Array evs = []);

Parámetros de chamada:

  • evs: Matriz, especifique o nome do evento

Resultados de devolución:

  • Object, devolve o propio obxecto do evento para facilitar as chamadas en cadea

setMaxListeners

O límite predeterminado no número de oíntes, só para compatibilidade

1
Worker.setMaxListeners(Integer n);

Parámetros de chamada:

  • n: Número enteiro, especifique o número de eventos

getMaxListeners

Obtén o número límite predeterminado de oíntes, só para compatibilidade

1
Integer Worker.getMaxListeners();

Resultados de devolución:

  • Integer, devolve a cantidade límite predeterminada

listeners

Consulta a matriz de escoita para o evento especificado do obxecto

1
Array Worker.listeners(String ev);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Array, devolve a matriz de escoita para o evento especificado

listenerCount

Consulta o número de oíntes para o evento especificado do obxecto

1
Integer Worker.listenerCount(String ev);

Parámetros de chamada:

  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Integer, devolve o número de oíntes para o evento especificado

Consulta o número de oíntes para o evento especificado do obxecto

1 2
Integer Worker.listenerCount(Value o, String ev);

Parámetros de chamada:

  • o: Valor, especifica o obxecto da consulta
  • ev: Cadea, especifica o nome do evento

Resultados de devolución:

  • Integer, devolve o número de oíntes para o evento especificado

eventNames

Consulta o nome do evento do oínte

1
Array Worker.eventNames();

Resultados de devolución:

  • Array, devolve unha matriz de nomes de eventos

emit

Activa un evento de forma activa

1 2
Boolean Worker.emit(String ev, ...args);

Parámetros de chamada:

  • ev: Cadea, nome do evento
  • args: ..., os parámetros do evento pasaranse á función de procesamento de eventos

Resultados de devolución:

  • Boolean, devolve o estado de activación do evento, devolve verdadeiro se hai un evento de resposta, se non, devolve falso

toString

Devolve a representación en cadea do obxecto. Polo xeral, devólvese "[Obxecto nativo]". O obxecto pódese volver implementar segundo as súas propias características.

1
String Worker.toString();

Resultados de devolución:

  • String, devolve a representación en cadea do obxecto

toJSON

Devolve unha representación en formato JSON do obxecto, devolvendo xeralmente unha colección de propiedades lexibles definidas polo obxecto.

1
Value Worker.toJSON(String key = "");

Parámetros de chamada:

  • key: Cadena, non usada

Resultados de devolución:

  • Value, devolve un valor que contén JSON serializable