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:
1new 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
4const {
Worker
} = require('worker_threads');
console.log('Hi from worker');
Al programa principal, executeu work.js amb el codi següent:
1
2
3
4const {
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
12const {
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
2new 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
1static 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);
1Function Worker.onload;
onmessage
La funció, la consulta i l'enllaç accepten esdeveniments de missatge postMessage, equivalent a on("missatge", func);
1Function Worker.onmessage;
onerror
La funció, la consulta i l'enllaç accepten esdeveniments de missatges d'error, equivalent a on("error", func);
1Function Worker.onerror;
funció de membre
postMessage
Envieu un missatge al mestre o al treballador,
1Worker.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
2Object 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
1Object 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
2Object 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
1Object 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
2Object 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
1Object 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
2Object 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.
1Object 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
2Object 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
1Object 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
2Object 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
1Object 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
1Object 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
2Object 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
1Object 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
1Object 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.
1Object 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.
1Object 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
1Worker.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
1Integer 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
1Array 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
1Integer 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
2Integer 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
1Array Worker.eventNames();
Resultats de retorn:
- Array, retorna una matriu de noms d'esdeveniments
emit
Activa activament un esdeveniment
1
2Boolean 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.
1String 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.
1Value Worker.toJSON(String key = "");
Paràmetres de trucada:
- key: Corda, no utilitzada
Resultats de retorn:
- Value, retorna un valor que conté JSON serializable