Objectwerker
Het Worker-object is een object dat wordt gebruikt om onderliggende threads te maken, die in het programma kunnen worden gemaakt en verwerkt. Een Worker-object kan worden opgevat als een JavaScript-proces dat wordt uitgevoerd in een andere thread dan de hoofdthread. Worker deelt geen geheugen met de hoofdthread en blokkeert de hoofdthread niet. Het is een reguliere asynchrone programmeermethode.
De constructor van het Worker-object is als volgt:
1new Worker(String path, Object opts = {})
in,pathDe parameter specificeert het JavaScript-bestandspad van de nieuwe thread. U kunt bijvoorbeeld een work.js-bestand schrijven met de volgende inhoud:
1
2
3
4const {
Worker
} = require('worker_threads');
console.log('Hi from worker');
Voer in het hoofdprogramma work.js uit met de volgende code:
1
2
3
4const {
Worker
} = require('worker_threads');
const worker = new Worker('path/to/work.js');
Na het uitvoeren kunt u de uitvoer "Hallo van werknemer" zien op de console van het hoofdprogramma.
Stel dat we in het volgende voorbeeld een langlopende berekening hebben en deze in een andere thread willen plaatsen om te verwerken zonder dat deze berekening in de hoofdthread wordt geblokkeerd. code tonen zoals hieronder:
Hoofddraad:
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');
In dit voorbeeld maken we een worker-thread via de constructor van het Worker-object om de berekening van de Fibonacci-reeks te verwerken. De hoofdthread geeft gegevens door aan de worker-thread via de methode postMessage() en verkrijgt de verwerkingsresultaten via de onmessage-gebeurtenis . Tegelijkertijd geeft de hoofdthread het bericht 'nog steeds werkend' weer om te bewijzen dat deze computertaak is 'gedelegeerd' naar de werkthread en andere dingen kan blijven verwerken.
De stijl van de worker-threadcode is als volgt:
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);
}
In de werkthread luisterden we naar de berichten die door de hoofdthread werden verzonden via de invoerparameter postMessage(), berekenden we de opgegeven Fibonacci-reeks en stuurden de berekeningsresultaten terug naar de hoofdthread via de Master.postMessage() -methode.
Dit is het meest eenvoudige Worker-voorbeeld. Bij het ontwikkelen met Worker-objecten zijn de hoofdthread en de worker-thread volledig asynchroon. Elk Worker-object is een afzonderlijke thread. Het Worker-object dat in de hoofdthread is geïnstantieerd, genereert geen enkel blok.
erfenis relatie
Constructeur
Worker
Constructor van werkobjecten
1
2new Worker(String path,
Object opts = {});
Oproepparameters:
- path: String, specificeert het Worker-invoerscript en accepteert alleen absolute paden
- opts: Object, constructieoptie, nog niet ondersteund
statische eigenschappen
defaultMaxListeners
Geheel getal, het standaard globale maximale aantal luisteraars
1static Integer Worker.defaultMaxListeners;
eigenschappen van leden
onload
Functie, query en binding accepteren de gebeurtenis load message, die gelijk is aan on("load", func);
1Function Worker.onload;
onmessage
Functie, query en binding accepteren postMessage-berichtgebeurtenissen, gelijk aan on("message", func);
1Function Worker.onmessage;
onerror
Functie, query en binding accepteren foutmeldingsgebeurtenissen, gelijk aan on("error", func);
1Function Worker.onerror;
lid functie
postMessage
Stuur een bericht naar Meester of Werknemer,
1Worker.postMessage(Value data);
Oproepparameters:
- data: Waarde, specificeert de inhoud van het verzonden bericht
on
Bind een gebeurtenishandler aan het object
1
2Object Worker.on(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Bind een gebeurtenishandler aan het object
1Object Worker.on(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
addListener
Bind een gebeurtenishandler aan het object
1
2Object Worker.addListener(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Bind een gebeurtenishandler aan het object
1Object Worker.addListener(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
prependListener
Bind een gebeurtenishandler aan de oorsprong van het object
1
2Object Worker.prependListener(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Bind een gebeurtenishandler aan de oorsprong van het object
1Object Worker.prependListener(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
once
Bind een eenmalige gebeurtenishandler aan het object. De eenmalige gebeurtenishandler wordt slechts één keer geactiveerd.
1
2Object Worker.once(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Bind een eenmalige gebeurtenishandler aan het object. De eenmalige gebeurtenishandler wordt slechts één keer geactiveerd.
1Object Worker.once(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
prependOnceListener
Bind een gebeurtenishandler aan de oorsprong van het object
1
2Object Worker.prependOnceListener(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Bind een gebeurtenishandler aan de oorsprong van het object
1Object Worker.prependOnceListener(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
off
De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken
1
2Object Worker.off(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Annuleer alle functies in de wachtrij voor objectverwerking
1Object Worker.off(String ev);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken
1Object Worker.off(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
removeListener
De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken
1
2Object Worker.removeListener(String ev,
Function func);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
- func: Functie, specificeer de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Annuleer alle functies in de wachtrij voor objectverwerking
1Object Worker.removeListener(String ev);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken
1Object Worker.removeListener(Object map);
Oproepparameters:
- map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
removeAllListeners
Annuleert alle luisteraars voor alle gebeurtenissen uit de verwerkingswachtrij van het object. Als er een gebeurtenis is opgegeven, worden alle luisteraars voor de opgegeven gebeurtenis verwijderd.
1Object Worker.removeAllListeners(String ev);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
Annuleert alle luisteraars voor alle gebeurtenissen uit de verwerkingswachtrij van het object. Als er een gebeurtenis is opgegeven, worden alle luisteraars voor de opgegeven gebeurtenis verwijderd.
1Object Worker.removeAllListeners(Array evs = []);
Oproepparameters:
- evs: Array, geef de naam van de gebeurtenis op
Resultaten retourneren:
- Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken
setMaxListeners
De standaardlimiet voor het aantal luisteraars, alleen voor compatibiliteit
1Worker.setMaxListeners(Integer n);
Oproepparameters:
- n: geheel getal, geef het aantal gebeurtenissen op
getMaxListeners
Krijgt het standaardlimietaantal luisteraars, alleen voor compatibiliteit
1Integer Worker.getMaxListeners();
Resultaten retourneren:
- Integer, retourneert de standaardlimiethoeveelheid
listeners
Voer een query uit op de luisteraararray voor de opgegeven gebeurtenis van het object
1Array Worker.listeners(String ev);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Array, retourneert de luisteraararray voor de opgegeven gebeurtenis
listenerCount
Vraag het aantal luisteraars op voor de opgegeven gebeurtenis van het object
1Integer Worker.listenerCount(String ev);
Oproepparameters:
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Integer, retourneert het aantal luisteraars voor de opgegeven gebeurtenis
Vraag het aantal luisteraars op voor de opgegeven gebeurtenis van het object
1
2Integer Worker.listenerCount(Value o,
String ev);
Oproepparameters:
- o: Waarde, specificeert het object van de query
- ev: String, specificeert de naam van de gebeurtenis
Resultaten retourneren:
- Integer, retourneert het aantal luisteraars voor de opgegeven gebeurtenis
eventNames
Naam van query-listenergebeurtenis
1Array Worker.eventNames();
Resultaten retourneren:
- Array, retourneert een array met gebeurtenisnamen
emit
Activeer actief een gebeurtenis
1
2Boolean Worker.emit(String ev,
...args);
Oproepparameters:
- ev: String, gebeurtenisnaam
- args: ..., gebeurtenisparameters worden doorgegeven aan de gebeurtenisverwerkingsfunctie
Resultaten retourneren:
- Boolean, retourneert de gebeurtenistriggerstatus, retourneert waar als er een responsgebeurtenis is, retourneert anders false
toString
Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.
1String Worker.toString();
Resultaten retourneren:
- String, retourneert de tekenreeksrepresentatie van het object
toJSON
Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.
1Value Worker.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat