Objecte objecte incorporat

ObjectWorker

L'objecte Worker és un objecte utilitzat per crear fils fills, que es poden crear i processar al programa. Un objecte Worker es pot entendre com un procés de JavaScript que s'executa en un fil diferent del fil principal. El treballador no comparteix memòria amb el fil principal i no bloqueja el fil principal. És un mètode de programació asíncron convencional.

El constructor de l'objecte Worker és el següent:

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

en,pathEl paràmetre especifica la ruta del fitxer JavaScript del fil nou. Per exemple, podeu escriure un fitxer work.js amb el contingut següent:

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

Al programa principal, executeu work.js amb el codi següent:

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

Després d'executar-se, podeu veure la sortida "Hola del treballador" a la consola del programa principal.

En l'exemple següent, suposem que tenim un càlcul de llarga durada i volem posar-lo en un altre fil per processar-lo sense ser bloquejat per aquest càlcul al fil principal. el codi mostra el següent:

Fil 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');

En aquest exemple, creem un fil de treball mitjançant el constructor de l'objecte Worker per processar el càlcul de la seqüència de Fibonacci. El fil principal passa dades al fil de treball mitjançant el mètode postMessage() i obté els resultats del processament mitjançant l'esdeveniment onmessage. . Al mateix temps, el fil principal mostra el missatge "encara funcionant" per demostrar que aquesta tasca informàtica s'ha "delegat" al fil de treball i pot continuar processant altres coses.

L'estil del codi del fil de treball és el següent:

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); }

Al fil de treball, vam escoltar els missatges enviats pel fil principal mitjançant el paràmetre d'entrada postMessage(), vam calcular la seqüència de Fibonacci especificada i vam enviar els resultats del càlcul al fil principal mitjançant el mètode Master.postMessage().

Aquest és l'exemple més bàsic de Worker. Quan es desenvolupa amb objectes de Worker, el fil principal i el fil de treball són completament asíncrons. Cada objecte Worker és un fil independent. L'objecte Worker creat al fil principal no generarà cap bloc.

relació hereditària

Constructor

Worker

Constructor d'objectes de treball

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

Paràmetres de trucada:

  • path: String, especifica l'script d'entrada Worker, només accepta camins absoluts
  • opts: Objecte, opció de construcció, encara no compatible

propietats estàtiques

defaultMaxListeners

Enter, el nombre màxim global predeterminat d'oients

1
static Integer Worker.defaultMaxListeners;

propietats dels membres

onload

La funció, la consulta i l'enllaç accepten l'esdeveniment del missatge de càrrega, que és equivalent a on("load", func);

1
Function Worker.onload;

onmessage

La funció, la consulta i l'enllaç accepten esdeveniments de missatge postMessage, equivalent a on("missatge", func);

1
Function Worker.onmessage;

onerror

La funció, la consulta i l'enllaç accepten esdeveniments de missatges d'error, equivalent a on("error", func);

1
Function Worker.onerror;

funció de membre

postMessage

Envieu un missatge al mestre o al treballador,

1
Worker.postMessage(Value data);

Paràmetres de trucada:

  • data: Valor, especifica el contingut del missatge enviat

on

Enllaceu un controlador d'esdeveniments a l'objecte

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Enllaceu un controlador d'esdeveniments a l'objecte

1
Object Worker.on(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitzarà com a nom de l'esdeveniment i el valor de l'atribut s'utilitzarà com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

addListener

Enllaceu un controlador d'esdeveniments a l'objecte

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Enllaceu un controlador d'esdeveniments a l'objecte

1
Object Worker.addListener(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitzarà com a nom de l'esdeveniment i el valor de l'atribut s'utilitzarà com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

prependListener

Enllaceu un controlador d'esdeveniments a l'origen de l'objecte

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Enllaceu un controlador d'esdeveniments a l'origen de l'objecte

1
Object Worker.prependListener(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitzarà com a nom de l'esdeveniment i el valor de l'atribut s'utilitzarà com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

once

Enllaça un controlador d'esdeveniments únic a l'objecte. El controlador únic només s'activarà una vegada.

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Enllaça un controlador d'esdeveniments únic a l'objecte. El controlador únic només s'activarà una vegada.

1
Object Worker.once(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitzarà com a nom de l'esdeveniment i el valor de l'atribut s'utilitzarà com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

prependOnceListener

Enllaceu un controlador d'esdeveniments a l'origen de l'objecte

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Enllaceu un controlador d'esdeveniments a l'origen de l'objecte

1
Object Worker.prependOnceListener(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitzarà com a nom de l'esdeveniment i el valor de l'atribut s'utilitzarà com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

off

Desassignar una funció de la cua de processament d'objectes

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Cancel·la totes les funcions de la cua de processament d'objectes

1
Object Worker.off(String ev);

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Desassignar una funció de la cua de processament d'objectes

1
Object Worker.off(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitza com a nom de l'esdeveniment i el valor de l'atribut s'utilitza com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

removeListener

Desassignar una funció de la cua de processament d'objectes

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

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment
  • func: Funció, especifiqueu la funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Cancel·la totes les funcions de la cua de processament d'objectes

1
Object Worker.removeListener(String ev);

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Desassignar una funció de la cua de processament d'objectes

1
Object Worker.removeListener(Object map);

Paràmetres de trucada:

  • map: Objecte, especifica la relació de mapatge d'esdeveniments, el nom de l'atribut de l'objecte s'utilitza com a nom de l'esdeveniment i el valor de l'atribut s'utilitza com a funció de processament d'esdeveniments

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

removeAllListeners

Cancel·la tots els oients de tots els esdeveniments de la cua de processament de l'objecte. Si s'especifica un esdeveniment, elimina tots els oients de l'esdeveniment especificat.

1
Object Worker.removeAllListeners(String ev);

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

Cancel·la tots els oients de tots els esdeveniments de la cua de processament de l'objecte. Si s'especifica un esdeveniment, elimina tots els oients de l'esdeveniment especificat.

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

Paràmetres de trucada:

  • evs: Matriu, especifiqueu el nom de l'esdeveniment

Resultats de retorn:

  • Object, retorna el propi objecte d'esdeveniment per facilitar les trucades en cadena

setMaxListeners

El límit predeterminat del nombre d'oients, només per compatibilitat

1
Worker.setMaxListeners(Integer n);

Paràmetres de trucada:

  • n: Enter, especifiqueu el nombre d'esdeveniments

getMaxListeners

Obté el nombre límit predeterminat d'oients, només per compatibilitat

1
Integer Worker.getMaxListeners();

Resultats de retorn:

  • Integer, retorna la quantitat límit predeterminada

listeners

Consulteu la matriu d'escolta per a l'esdeveniment especificat de l'objecte

1
Array Worker.listeners(String ev);

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Array, retorna la matriu d'escolta per a l'esdeveniment especificat

listenerCount

Consulteu el nombre d'oients per a l'esdeveniment especificat de l'objecte

1
Integer Worker.listenerCount(String ev);

Paràmetres de trucada:

  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Integer, retorna el nombre d'oients per a l'esdeveniment especificat

Consulteu el nombre d'oients per a l'esdeveniment especificat de l'objecte

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

Paràmetres de trucada:

  • o: Valor, especifica l'objecte de la consulta
  • ev: Cadena, especifica el nom de l'esdeveniment

Resultats de retorn:

  • Integer, retorna el nombre d'oients per a l'esdeveniment especificat

eventNames

Consulta el nom de l'esdeveniment de l'oient

1
Array Worker.eventNames();

Resultats de retorn:

  • Array, retorna una matriu de noms d'esdeveniments

emit

Activa activament un esdeveniment

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

Paràmetres de trucada:

  • ev: cadena, nom de l'esdeveniment
  • args: ..., els paràmetres d'esdeveniment es passaran a la funció de processament d'esdeveniments

Resultats de retorn:

  • Boolean, retorna l'estat de l'activador de l'esdeveniment, retorna true si hi ha un esdeveniment de resposta, en cas contrari retorna false

toString

Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.

1
String Worker.toString();

Resultats de retorn:

  • String, retorna la representació de cadena de l'objecte

toJSON

Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.

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

Paràmetres de trucada:

  • key: Corda, no utilitzada

Resultats de retorn:

  • Value, retorna un valor que conté JSON serializable